2013-04-25 81 views
1
if ($result = $db->query("SELECT * FROM tab WHERE ID = $id")) { 
while($row = $result->fetch_assoc()){ 
echo "ID:". $row['ID']; 
echo "Product:" .$row['Product']; 
... } 
$result->close(); 
} else { 
echo "could not retrieve data from db"; } 

我只得到一個結果,但它應該更多。 如何獲得所有結果?mysqli fetch_assoc只有1個結果,而不是全部

btw我無法使用fetch_all。

+2

你確定你應該得到更多的結果嗎?你的WHERE子句引用了我期望成爲你的PK,並且只能有一個。您是否直接在MySQL命令行或MyPHPAdmin上嘗試過查詢? – user1032531 2013-04-25 20:43:48

+0

爲了避免嚴重的[SQL注入漏洞](http://bobby-tables.com/php)(http://bobby-tables.com/php)(http://bobby-tables.com/php)(http://bobby-tables.com/php)(http://bobby-tables.com/php)(http://bobby-tables.com/php)將用戶數據放入查詢中,您確實需要小心。 COM /)。在查詢字符串中查看'$ id'非常非常糟糕,特別是當mysqli支持'bind_param'來設置這些時。 – tadman 2013-04-25 21:14:19

回答

-2

從MySQL結果中獲取數據的過程是這樣的:

  • 連接到主機
  • 選擇DB
  • 運行查詢

if ($result) //Check if the return is true

while($row = mysqli_fetch_array($result)) { // do something with the $row //like print it } }

爲了使用

echo $your_query 

然後運行通過phpmyadmin該查詢,看看有什麼結果或錯誤你做出充分確保打印查詢。

1

更換

$result = $db->query("SELECT * FROM tab WHERE ID = $id" 

$result = $db->query("SELECT * FROM tab WHERE ID = $id LIMIT 1" 
2

您在您的查詢,這意味着你所要求的特定項目使用的ID。爲了選擇所有你必須刪除這個條件。

你的代碼是這樣:

if ($result = $db->query("SELECT * FROM tab")) { 
    while($row = $result->fetch_assoc()){ 
     echo "ID:". $row['ID']; 
     echo "Product:" .$row['Product']; 
    } 
    $result->close(); 
    } else { 
    echo "There is no data in the database"; 
    } 
0

必須從選項卡中選擇兩個編號和產品,並添加一個where語句。

你的代碼是這樣:

if ($result = $db->query("SELECT ID, Product, user FROM tab WHERE user='".$username."' ")) { //$username = john; 
    while($row = $result->fetch_assoc()){ 
     echo "ID:". $row['ID']; 
     echo "Product:" .$row['Product']; 
    } 



    } else { 
    echo "There is no data in the database"; 

    } result->close(); 

讓我希望你的價值劃等號的名稱是約翰它可能是任何東西。所以您將從數據庫中獲取john列出的所有結果行。

put $ username ='john';在if語句之前。

相關問題