我有一个查询,我正在尝试使用
更新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一样!
亲切的问候, 西蒙
答案 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 ."')");
这只是猜测。