Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何更正此MySql查询?_Php_Mysql - Fatal编程技术网

Php 如何更正此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 谢谢你的帮助 为了清楚起见,我所要做的就是

我有一个查询,我正试图用它更新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

谢谢你的帮助

为了清楚起见,我所要做的就是将文本添加到数据库中的文本字段中,该文本与上面的useragent完全相同

亲切问候,,
Simon

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

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中使用的。