mySql查询找不到该行

时间:2015-03-13 09:41:50

标签: php mysql mysqli

我是PHP&的新手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 . ")");
}

?>

2 个答案:

答案 0 :(得分: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'];
}

答案 1 :(得分: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."");