无法获得sql值,PHP

时间:2018-05-18 15:23:46

标签: php mysql

我发现错误,但我不知道为什么,错误是在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);
}



    ;
    ?>

1 个答案:

答案 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 />";
  }