2014-11-06 80 views
0

對於每個客戶,我想返回:訂單的ID,姓名,地址,城市,上限,國家和總數。表名是:顧客(10條)和訂單(20條)選擇所有客戶和每個客戶的總訂單

我試過這個代碼,但它不工作

<?php 
$conn = mysqli_connect('127.0.0.1','...','...','...') or die("Connection failed: " . $conn->connect_error); 

$select = mysqli_query($conn,"SELECT customers.id,customers.name,customers.address,customers.city,customers.cap,customers.country COUNT(customerid) as TotalOrders FROM customers LEFT JOIN orders GROUP BY customer.id"); 

while($row = mysqli_fetch_array($select,MYSQLI_ASSOC)) 
{ 
    $tb = <<<table 
    ...{$row['totalorders']}... 
    table; 
    echo $tb; 
} 
mysqli_free_result($select); 

echo $num_record = mysqli_affected_rows($conn); 

$conn->close(); 
?> 
+2

缺少逗號?還有一個缺失的連接條件。也許如果你沒有像這樣寫完所有內容,或者閱讀錯誤信息! – Strawberry 2014-11-06 13:43:26

回答

1

所以像...

<?php 
include('../path/to/connection/stateme.nts'); 

$query = 
" 
SELECT c.id 
    , c.name 
    , c.address 
    , c.city 
    , c.cap 
    , c.country 
     COUNT(o.customerid) TotalOrders 
    FROM customers c 
    LEFT 
    JOIN orders o 
    ON o.customerid = c.id 
GROUP 
    BY c.id; 
"; 


$result = mysqli_query($db,$query); ** where $db is something like mysqli_connect("myhost", "myusername", "mypassword"); 

while($row = mysqli_fetch_assoc($result)) 
{ 
$tb = <<<table 
...{$row['totalorders']}... 
table; 
echo $tb; 
} 

mysqli_free_result($result); 

echo $num_record = mysqli_affected_rows($db); 

$db->close(); 
?> 

(我沒有PHP的編碼器)

+0

+1整潔@Strawberry! – 2014-11-06 13:48:21

+0

得到2個錯誤:mysqli_fetch_array()和msqli_free_results()期望參數1爲mysqli_result,布爾給定 – Antonio102 2014-11-06 13:55:56

0

你有一個逗號缺失 -

customers.country COUNT(customerid) 
-----------------^ 

你就只剩下了一個ON條件 -

FROM customers LEFT JOIN orders //ON would be here 

有一件事你應該總是做的是創造和Ru n您對數據庫的查詢您將這些查詢放入您的代碼中。總是,總是包括錯誤檢查。

+0

始終包含開發中的錯誤檢查。在生產中刪除它! – Strawberry 2014-11-06 13:46:50

+0

我們從不在生產中將其刪除,因爲用戶會找到一種方法來創建我們從未見過的錯誤 - 我們只是在記錄對開發人員更有利的事情時使錯誤更友好。 – 2014-11-06 13:47:52

+0

但是,您通過向最終用戶泄露錯誤消息而使自己容易受到攻擊 – Strawberry 2014-11-06 13:49:35

相關問題