我发现错误,但我不知道为什么,错误是在sql语句中,如果我用实际值替换哈希变量工作,例如,hash =“3”工作,但如果我使用变量哈希与相同的值,它不工作;(。我不能得到结果的值,它的数字2但在回声中它没有显示任何东西,我不明白为什么,它使用fetch获取值,是一个1的数组所以应该是[0]数字2,但它不起作用, 修复错误是在变量
上的空格上 <?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require("db.php");
$hash = $_GET["hash"];
$sql23 = "SELECT * FROM `game` WHERE `hash` = '$hash'";
if ($result=mysqli_query($link,$sql23))
{
// Fetch one and one row
while ($row = mysqli_fetch_row($result)) {
printf ("%s (%s)\n", $row[0], $row[1]);
}
// Free result set
mysqli_free_result($result);
}
;
?>
答案 0 :(得分:1)
首先,您的代码非常容易受到SQL注入攻击。确保从中保存您的应用程序。所以现在,改变方式:
$hash = mysqli_real_escape_string($link, $_GET["hash"]);
$sql2 = "SELECT point FROM game WHERE hash='$hash'";
其次,你的代码在这里:
while ($row = $result->fetch_assoc()) {
echo $row['']."<br>";
}
echo $row[0];
没有任何意义。您必须以这种方式重写它,不要在where
条件中分配内容,也可以在进入where
循环之前检查行是否存在,最后不要混合OOP和过程< /强>:
if (mysqli_num_rows($result))
while (false != ($row = mysqli_fetch_assoc($result))) {
var_dump($row);
}
以上代码将向您显示可用的字段。最有可能的是,您正在寻找的代码是:
if (mysqli_num_rows($result))
while (false != ($row = mysqli_fetch_assoc($result))) {
echo $row["point"], "<br />";
}