2016-04-29 125 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