2017-07-19 92 views
-1

我有兩個疑問(完全一樣),我想合併如何將二者結合起來相同的查詢(讀取和使用fetchall)

第一個查詢:

$stmt = $bdd->prepare('SELECT *, DATE_FORMAT(date_parcel,"%d/%m/%Y") AS formatted_date from validated WHERE name = :name group by age order by age DESC'); 
$stmt ->execute(array(
    ':name' => $_GET['name'] 
)); 
$orders = $stmt ->fetchall(); 

它允許我做的foreach循環把所有的數據在一個HTML表格

第二個查詢:

$infos = $bdd->prepare('SELECT *, DATE_FORMAT(date_parcel,"%d/%m/%Y") AS formatted_date from validated WHERE name = :name group by age order by age DESC'); 
$infos ->execute(array(
    ':name' => $_GET['name'] 
)); 
$info = $infos ->fetch(); 

這正是和以前一樣,但它可以讓我用我的數據foreach循環前顯示的信息。

的代碼看起來是這樣的:

<div class="panel panel-default"> 
    <div class="panel-body"> 
     <center><h3><?php echo ucwords(strtolower($info['data5'])). ' - ' . $info['data6']; ?></h3></center> 
     .... 
    </div> 
</div> 

.... 

<tbody> 
    <?php foreach ($orders as $row) { ?> 
    <tr> 
     <td colspan="1"><?php echo $row['data1'] ?></td> 
     <td colspan="1"><?php echo $row['data2'] ?></td> 
     <td colspan="1"><?php echo $row['data3'] ?></td> 
     <td colspan="1"><?php echo $row['data4'] ?></td> 
    </tr> 
    <?php } ?> 
</tbody> 

所以我想能夠使用一個請求,我該怎麼辦呢? 謝謝

+0

這些GROUP BY的無效,將引發一個錯誤在較新的MySQL版本(除非在兼容模式下),並返回在舊版本上出現不可預知的結果。一般的GROUP BY規則說:如果指定了GROUP BY子句,SELECT列表中的每個列引用必須標識一個分組列或者是一個set函數的參數! – jarlh

回答

1

我想你可以使用這樣

$stmt = $bdd->prepare('SELECT *, DATE_FORMAT(date_parcel,"%d/%m/%Y") AS formatted_date from validated WHERE name = :name group by age order by age DESC'); 
$stmt ->execute(array(
    ':name' => $_GET['name'] 
)); 
$orders = $stmt ->fetchall(); 
$info = $stmt ->fetch(); 

也許它的工作原理...不知道。

+0

謝謝你的回答,但它不可能,用你的代碼,它不知道什麼$ infos – Rocstar

+0

不工作,當我使用var_dump時,我有這個結果:'boolean false' – Rocstar

1

fetchAll返回一個數組,所以你可以很容易地使用它來獲取特定的行:

$stmt = $bdd->prepare('SELECT *, DATE_FORMAT(date_parcel,"%d/%m/%Y") AS formatted_date from validated WHERE name = :name group by age order by age DESC'); 
$stmt ->execute(array(
    ':name' => $_GET['name'] 
)); 
$orders = $stmt ->fetchall(); 
$info = $orders[0]; 
+0

是啊!謝謝,它的工作原理!這是結合這兩個查詢的最佳方式? – Rocstar

+0

直接使用'$ orders [0]'或者通過引用'$ info'來複制它可能會有更多的內存效率,但我認爲在這種情況下可以忽略不計。 –

相關問題