所以我有两个代码跟在一起:
$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返回空),则它开始运行第二个代码。它使用大多数相同的变量,但它不起作用。
它给出了回声,然后是错误:
您的数据库中没有任何信息!
PHP警告:mysqli_query():( 42000/1064):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在“SET field6 =''WHERE userid = 1'附近使用正确的语法
当我在现场进入测试时,转到:
'SET field6 = 'test' WHERE userid=1' at line 1 in
我知道代码非常混乱且不一致但我一直在努力改变小型员工。
答案 0 :(得分:1)
$table
没有任何价值,因此您的查询如下:
UPDATE SET field6 = 'test' WHERE userid=1
在查询中使用之前,您永远不会验证有效值,因此空值会破坏您的查询。因此,您也对SQL注入持开放态度。