我如何更正此MySql查询?

时间:2017-08-22 21:11:08

标签: php mysql

我有一个查询,我正在尝试使用

更新MySQL表
UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, " . $MyString . ")    

$MyString会包含像MOZILLA/5.0 (COMPATIBLE; SEMRUSHBOT/1.2~BL; +HTTP://WWW.SEMRUSH.COM/BOT.HTML这样的用户,但我收到语法错误?该字段设置为TEXT NULL,默认为NULL

任何帮助表示感谢。

为了清楚起见,我要做的是将文本添加到数据库中的文本字段,文本IS就像上面的useragent一样!

亲切的问候, 西蒙

3 个答案:

答案 0 :(得分:2)

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)');

答案 1 :(得分:0)

您需要在字符串周围添加'引号'

"UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, '". $MyString ."')"  

如果没有这个,MySQL就不知道如何解释你传递的数据。

那就是说,你在这里尝试的是极其危险的,让你对SQL注入持开阔态度。

考虑使用mysqli或PDO提供的参数化/预准备语句 - 请参阅此处:How can I prevent SQL injection in PHP?

答案 2 :(得分:0)

我猜问题是分隔符'。 消除分隔符:

("UPDATE ". TABLE_PREFIX ." TABLE SET FIELD = CONCAT(FIELD, '". $MyString ."')");

这只是猜测。