gpt4 book ai didi

php - 简单的 PHP/MySQL 语法错误,告诉 "check manual?"

转载 作者:行者123 更新时间:2023-11-29 14:45:07 27 4
gpt4 key购买 nike

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's website.

mysql_query("UPDATE Scholarships2 SET Requirements2 = '$requirements2'
WHERE scholarshipID = '$sID'")
or die("Insert Error1: ".mysql_error());

我阅读了有关此主题的其他 Stackoverflow 问题/答案,但找不到我正在使用的保留字。

$sID 只是一个 int,而 $requirements2 是

$regex = '/<h4>Requirements<\/h4>([\n\n\n]|.)*?<\/table>/';
preg_match_all($regex,$data,$match);
$requirements2 = $match[0][0];

最佳答案

for the right syntax to use near 's website

这意味着它正在提示您的查询中 的网站。 “你的查询中的那部分在哪里?”,我听到你问。

嗯,其中一个变量包含诸如 Bob's website 之类的内容,而您盲目地将其注入(inject)到查询中的事实将为您提供如下内容:

UPDATE Scholarships2 SET Requirements2 = 'Bob's website' ...

这个特定的查询不会适合 SQL 解析器:-)

little Bobby Tables 时,其他不会立即让解析器窒息的可能性也不会受到您的客户群的欢迎。窃取或删除您的信用卡数据库。

参见this link以获得更全面的解释和避免策略。就您而言,这可能会涉及 mysql-real-escape-string .

换句话说,您需要类似的东西:

mysql_query(
"UPDATE Scholarships2 SET Requirements2 = '" .
mysql_real_escape_string($requirements2) .
"' WHERE scholarshipID = '" .
mysql_real_escape_string($sID) .
"'"
) or die("Insert Error1: ".mysql_error());
<小时/>

顺便说一句,如果 $sID 只是一个整数(并且不会受到注入(inject)攻击),您可能可以删除它周围的引号。我认为这对 MySQL 来说并不重要(因为它的“一切都是字符串”性质),但您的查询不会移植到其他 DBMS。

关于php - 简单的 PHP/MySQL 语法错误,告诉 "check manual?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com