2016-04-29 153 views
0

嗨我可以連接到我的數據庫,但它說我有0行! 我試過不同的方式來連接到我的數據庫,但他們都總是返回0行,所以它不會顯示數據庫中的任何數據。Mysqli結果總是返回0

$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM keys"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "id: " . $row["id"]. " - Key: " . $row["key"]. " " . $row["used"]. "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 
+0

你混合**的面向對象** ** **程序的方法。 –

+0

我在鏈接的頁面上看到兩行,而不是零。 –

+1

我從Hanky Panky得到了幫助,它現在起作用了:D我從問題中刪除鏈接:D –

回答

4
SELECT * FROM keys 
      ^

KEYSreserved term,因此查詢執行失敗,並沒有數據返回,至少是逃避它。

最佳選擇是將您的字段名稱更改爲未保留的字段名稱。

一些有趣的事情要注意

你說如果有我的結果有些行告訴我這些,但如果在我的結果是沒有行,然後告訴我的行數。簡而言之,在查詢失敗時顯示行數完全沒有意義!這將顯示由數據庫驅動程序

+0

使用反引號可能有幫助。 –

+0

是的,這就是*逃脫它* :) –

+0

對有趣的筆記 - 是的,我知道這是毫無意義的,我故意找出問題可能是什麼。 –

3

keys返回錯誤信息的好地方是reserved keyword在MySQL就必須在反引號作爲

$sql = "SELECT * FROM `keys`"; 

您的查詢失敗,你得到了0 result always

要檢查錯誤在查詢中使用

if (!$conn->query("Your_QUERY")) { 
    printf("Errormessage: %s\n", $conn->error); 
} 

http://php.net/manual/en/mysqli.error.php

1

我認爲你必須使用此代碼獲取結果: -

$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 
$sql = "SELECT * FROM `keys`"; 
$result = mysqli_query($conn, $sql); 
if ($result->num_rows > 0) { 
// output data of each row 
while($row = $result->fetch_assoc()) { 
    echo "id: " . $row["id"]. " - Key: " . $row["key"]. " " . $row["used"]. "<br>"; 
} 
} else { 
echo "0 results"; 
echo "Rows:". mysqli_num_rows($result); 
} 
$conn->close(); 
+0

這個答案並不能解釋代碼是如何工作的,一個好的答案應該是更多的信息 – ash