mysqli_query(): (42000/1064) when UPDATE SET WHERE with $_PO


mysqli_query(): (42000/1064) when UPDATE SET WHERE with $_POST

所以我有两个代码在彼此后面:

$query ="SELECT field6 FROM userfield WHERE userid='".$vbulletin->userinfo['userid']."' AND field6 IS NOT NULL LIMIT 1";
if ($result=mysqli_query($link, $query)) {
     $row = mysqli_fetch_array($result);
      $API = $row['field6'];

}
if(empty($API)) {
      echo "You don't have any information in our database!";
      $table   = $_POST["userfield"];
         $query ="  UPDATE $table SET field6='".mysqli_real_escape_string($link,$_POST['token'])."' WHERE userid=".$vbulletin->userinfo['userid']."";
   mysqli_query($link, $query);

$link和$vbulletin代码工作正常,完整的第一部分代码也是如此。

但是,如果field6对于该用户确实为空(并且$API返回空),则开始运行第二段代码。它使用大多数相同的变量,但它不会工作。

给出回显,然后给出错误:

你在我们的数据库中没有任何信息!
mysqli_query():(42000/1064):你的SQL语法有一个错误;查看与您的MySQL服务器版本对应的手册,以便在 第1行'SET field6 = " WHERE userid=1'附近使用正确的语法

当我在字段中输入test时in变成:

'SET field6 = 'test' WHERE userid=1' at line 1 in

我知道代码是超级混乱和不一致的,但我一直在尝试改变小的工作人员整晚

$table没有值,所以您的查询看起来像:

UPDATE SET field6 = 'test' WHERE userid=1

在查询中使用有效值之前,您永远不会验证提供的有效值,因此空值将中断查询。