![](/img/trans.png)
[英]Mysql Codeigniter Active Record - How do I do a where_in query and return the correct order of results?
[英]How do i correct this MySql query?
我有一个查询,我正在尝试更新一个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
。
任何帮助表示赞赏。
为了清楚起见,我要做的就是将文本添加到数据库的文本字段中,该文本与上面的useragent完全一样!
亲切的问候,西蒙
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提供的参数化/预处理语句-参见此处: 如何防止PHP中的SQL注入?
我想问题是分隔符´。 消除定界符:
("UPDATE ". TABLE_PREFIX ." TABLE SET FIELD = CONCAT(FIELD, '". $MyString ."')");
只是个猜测而已。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.