Php Mysqli更新集,其中语法错误
所以我有了这段php代码Php Mysqli更新集,其中语法错误,php,mysql,mysqli,Php,Mysql,Mysqli,所以我有了这段php代码 if($_POST['action']=='newComment') { $mysqli = new mysqli("localhost", "root", "", "nested_comment"); $new_post = $mysqli->real_escape_string($_POST['content']); $result = $mysqli->query("SELECT @myLeft := lft FROM comm
if($_POST['action']=='newComment')
{
$mysqli = new mysqli("localhost", "root", "", "nested_comment");
$new_post = $mysqli->real_escape_string($_POST['content']);
$result = $mysqli->query("SELECT @myLeft := lft FROM comment
WHERE lft = '1';
UPDATE comment SET rgt = rgt + 2 WHERE rgt > @myLeft;
UPDATE comment SET lft = lft + 2 WHERE lft >= @myLeft;
INSERT INTO comment(content, lft, rgt) VALUES('$new_post', @myLeft, @myLeft + 1);");
if($result)
echo "ok";
else
echo $mysqli->error;
}
运行此操作时,会引发一个错误:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解可在“更新注释集rgt=rgt+2,其中rgt>@myLeft;
更新第3行的“注释集”
但当我将sql查询放入Sequel Pro(Mac)中时,它运行良好。我尝试了许多其他帖子的解决方案,但没有一个奏效。我的语法有问题吗,或者mysql版本有问题吗?非常感谢。这是因为您试图一次执行多条语句 Mysqli为此提供了一个功能
mysqli\u multi\u query()
请注意,找到的任何SQL注入现在都可以链接在一起。使用时要小心
安全考虑
API函数mysqli_query()和mysqli_real_query()不设置
在服务器中激活多个查询所需的连接标志。
对多个语句使用额外的API调用以减少
意外SQL注入攻击的可能性。攻击者可能会试图
添加以下语句:;删除数据库mysql或;选择睡眠(999)。
如果攻击者成功将SQL添加到语句字符串中,但
如果未使用mysqli_multi_查询,服务器将不会执行
二是注入恶意SQL语句
这是因为您试图一次执行多条语句 Mysqli为此提供了一个功能
mysqli\u multi\u query()
请注意,找到的任何SQL注入现在都可以链接在一起。使用时要小心
安全考虑
API函数mysqli_query()和mysqli_real_query()不设置
在服务器中激活多个查询所需的连接标志。
对多个语句使用额外的API调用以减少
意外SQL注入攻击的可能性。攻击者可能会试图
添加以下语句:;删除数据库mysql或;选择睡眠(999)。
如果攻击者成功将SQL添加到语句字符串中,但
如果未使用mysqli_multi_查询,服务器将不会执行
二是注入恶意SQL语句
谢谢!所以,如果我使用真正的逃逸字符串来防止注射,这就足够了吗?如果可能的话,更喜欢参数化查询!所以,如果我使用真正的逃逸字符串来防止注射,这就足够了吗?如果可能,首选参数化查询避免使用MySQL变量,除非它是过程的一部分。避免使用MySQL变量,除非它是过程的一部分。