2015-03-13 52 views
0

我是PHP & mySQL的新手,但我懷疑這裏有些撇號相關的bug(也許)。mySql查詢找不到該行

出於某種原因,第一個查詢似乎總是返回null,因爲

echo "result: $result\n"; 

從來沒有打印任何數據。在預期的第一次調用中,但在第二次調用時,該玩家已被添加到數據庫中。我的數據庫的工作原理是,我可以看到具有正確ID的行被添加到數據庫(通過phpMyAdmin)。

你能幫我發現錯誤嗎?

<?php 
require_once('Db.php'); 

$db = new Db(); 

// Quote and escape form submitted values 
$id = $db->quote($_POST['id']); 
$score = $db->quote($_POST['score']); 

$result = $db->query("SELECT `id` FROM `xxxxxx`.`Player` WHERE `id` = `$id`"); 

echo "result: $result\n"; // Never prints any data 

if($result->num_rows == 0) { 
    // Row not found. Create it! 
    $result = $db->query("INSERT INTO `xxxxxx`.`Player` (`id`,`score`) VALUES (" . $id . "," . 0 . ")"); 
} 

?> 
+0

試 「的var_dump($結果);」 – doev 2015-03-13 09:43:04

+1

因爲'$ result'必須是關聯數組或對象,不能使用'echo'打印。嘗試'var_dump($ result);'或'print_r($ result);' – prava 2015-03-13 09:44:10

+0

請參閱http://stackoverflow.com/tags/php/info並搜索「我有一個典型」不起作用的「問題」。 – 2015-03-13 09:54:32

回答

1

首先,從WHERE子句中將這些反引號從id中刪除,否則將從id列取代字段名稱而不是'id'。 然後,你需要從$result獲取數據:

$result = $db->query("SELECT id FROM `xxxxxx`.`Player` WHERE id = '$id'"); 
$row = $result->fetch_array(); 
echo $row['id']; 

或者,如果有不止一個更行:

while($row = $result->fetch_array()) 
{ 
    echo $row['id']; 
} 
+0

你可以考慮@ajaykumartak也在你的回答 – user1844933 2015-03-13 09:53:03

+0

反引號仍然不正確。 – 2015-03-13 09:53:20

+0

@ user1844933哦,我沒有注意到$ id也反引號,謝謝指出 – 2015-03-13 09:57:43

0

您正在使用反引號中查詢爲$id。刪除它們,然後重試。 您的查詢應該是

$result = $db->query("SELECT `id` FROM `xxxxxx`.`Player` WHERE `id` = $id"); 

OR

$result = $db->query("SELECT `id` FROM `xxxxxx`.`Player` WHERE `id` = ".$id."");