2011-08-18 167 views
0

我在做這個查詢。它沒有顯示出在$產品中的結果。查詢不顯示結果

代碼:

$sql = "SELECT s* 
    FROM Client_agent_approvals caa 
    INNER JOIN Subscriptions s ON s.client_id = caa.client_id 
    WHERE caa.agent_id = '$id' 
    AND s.agent_id <> '$id'"; 
$result = mysql_query($sql); 

$query = mysql_query($sql) or die("Error: " . mysql_error()); 

if ($result == "") { 
    echo ""; 
} 
echo ""; 


$rows = mysql_num_rows($result); 

if ($rows == 0) { 
    print(""); 
} elseif ($rows > 0) { 
    while ($row = mysql_fetch_array($query)) { 

     $product = $row['product']; 

     print("Products they have are: $product"); 
    } 
} 
+0

下一次您可能想更正確地縮進您的代碼。閱讀時更方便。 (也是你做任何編碼的一般提示。) – pimvdb

回答

1

你有​​。我想你的意思是s.*。你也應該用做......而對於查詢迭代:

$row = mysql_fetch_array($query); 

if(!$row) 
{ 
    print('no rows');// a more useful message 
} 
else 
{ 
    do { 

     $product = $row['product']; 

     print("Products they have are: $product"); 
    } 
    while($row = mysql_fetch_array($query)); 

} 

mysql_num_rows實際計算所有的值返回的,這不。你幾乎可以說它爲同樣的結果做了兩次工作。

當然,所有這些都假定有一行或多行返回。你能否確認你應該通過在MySQL中直接運行這個東西來獲得某些東西?

+0

是的,我只是得到的產品是部分,但不是所需的結果$產品。讓我使用您的解決方案修復它。 – KPO

+0

使用你的建議,它說「沒有行」,但有條目應該返回... – KPO

+0

不應該打印「無行」發生如果(!$行)? – codercake

1

如果您在剛剛發佈的評論後編輯了代碼,那不是「縮進」的意思。你可以縮進循環和if中的語句,使其更具可讀性。

在對它們做任何事情之前,先嚐試在$ rows和$ row上使用print_r。它可以幫助你看到這些變量發生了什麼。 http://php.net/manual/en/function.print-r.php