我是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 . ")");
}
?>
答案 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."");