Php 如何更正此MySql查询?
我有一个查询,我正试图用它更新MySQL表Php 如何更正此MySql查询?,php,mysql,Php,Mysql,我有一个查询,我正试图用它更新MySQL表 UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, " . $MyString . ") $MyString将包含类似于MOZILLA/5.0(兼容;SEMRUSHBOT/1.2~BL;+HTTP://WWW.SEMRUSH.COM/BOT.HTML的用户代理,但我收到一个语法错误?该字段设置为TEXT NULL,默认值为NULL 谢谢你的帮助 为了清楚起见,我所要做的就是
UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, " . $MyString . ")
$MyString
将包含类似于MOZILLA/5.0(兼容;SEMRUSHBOT/1.2~BL;+HTTP://WWW.SEMRUSH.COM/BOT.HTML
的用户代理,但我收到一个语法错误?该字段设置为TEXT NULL
,默认值为NULL
谢谢你的帮助
为了清楚起见,我所要做的就是将文本添加到数据库中的文本字段中,该文本与上面的useragent完全相同
亲切问候,,
Simonsql中的字符串分隔符是',我假设您在问题中的查询是php和sql之间的某种混合。我建议您首先获取正确的sql,然后将其合并到php中。您的查询可能应该如下所示:
UPDATE ST_uAgent
SET agent = CONCAT(agent, 'MOZILLA/5.0 (COMPATIBLE; DOTBOT/1.1; HTTP://WWW.OPENSITEEXPLORER.ORG/DOTBOT, HELP@MOZ.COM)');
sql中的字符串分隔符是',我假设您在问题中的查询是php和sql之间的某种混合。我建议您首先获取正确的sql,然后将其合并到php中。您的查询可能应该如下所示:
UPDATE ST_uAgent
SET agent = CONCAT(agent, 'MOZILLA/5.0 (COMPATIBLE; DOTBOT/1.1; HTTP://WWW.OPENSITEEXPLORER.ORG/DOTBOT, HELP@MOZ.COM)');
您需要在字符串周围加上
“
引号”
"UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, '". $MyString ."')"
没有这个,MySQL不知道如何解释您正在传递的数据
这就是说,您在这里尝试的是非常危险的,并且使您对SQL注入敞开了大门
考虑改用mysqli或PDO提供的参数化/预处理语句-请参见此处:您需要在字符串周围加上
'
引号'
"UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, '". $MyString ."')"
没有这个,MySQL不知道如何解释您正在传递的数据
这就是说,您在这里尝试的是非常危险的,并且使您对SQL注入敞开了大门
考虑改用mysqli或PDO提供的参数化/预处理语句-参见此处:我想问题在于分隔符´。 删除分隔符:
("UPDATE ". TABLE_PREFIX ." TABLE SET FIELD = CONCAT(FIELD, '". $MyString ."')");
这只是猜测。我想问题在于定界符。 删除分隔符:
("UPDATE ". TABLE_PREFIX ." TABLE SET FIELD = CONCAT(FIELD, '". $MyString ."')");
这只是一个猜测。错误消息是什么?您试图更新的表的名称是什么?您是否可以更新您的问题,因为您试图归档的内容并不完全清楚。好的,我在问题中放置表的地方,实际的行应该是uAgent,下面是错误更新
ST\uAgent
SET agent=CONCAT(代理,MOZILLA/5.0(兼容;DOTBOT/1.1;),HELP@MOZ.COM))您可以使用准备好的语句吗?这一语句用于防止sql注入攻击和您的字符转义问题。错误消息是什么?您尝试更新的表的名称是什么?您是否可以更新您的问题,因为您尝试归档的内容不完全清楚。好的,我在问题中放置表的位置实际行是阅读uAgent,下面是错误更新ST_agent
SET agent=CONCAT(agent,MOZILLA/5.0(兼容;DOTBOT/1.1;),HELP@MOZ.COM))您可以使用prepared语句吗?这是一个用于防止sql注入攻击和字符转义问题的语句。这很好,但没有任何空格或回车符,因此所有内容都作为一个长字符串读取。我将查看PDO,感谢您指出这一点。我同意,请确保使用双引号,因为这就是你在concat中使用的内容。这很好,很有效,但是没有任何空格或回车符,所以所有内容都是作为一个长字符串读取的。我将查看PDO,感谢你指出这一点。我同意,请确保使用双引号,因为这是你在concat中使用的。