Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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,有人能告诉我为什么我不能执行这个简单的脚本吗。我得到的错误是,您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解可在第1行“1update page SET RegionId=1,其中RegionId=-1或RegionId=-3 and Descripti”附近使用的正确语法。如果我将此语句复制到MySQLPHPPadmin,它将正常运行。请帮忙?提前谢谢 $sql = "update page SET RegionId = 2 WHERE (RegionId = -1 o

有人能告诉我为什么我不能执行这个简单的脚本吗。我得到的错误是,您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解可在第1行“1update page SET RegionId=1,其中RegionId=-1或RegionId=-3 and Descripti”附近使用的正确语法。如果我将此语句复制到MySQLPHPPadmin,它将正常运行。请帮忙?提前谢谢

$sql = "update page SET RegionId = 2  WHERE (RegionId = -1 or RegionId = -3) and Description like '%Saskatoon%' LIMIT 1";
$sql = $sql . "update page SET RegionId = 1  WHERE (RegionId = -1 or RegionId = -3) and Description like '%Regina%' LIMIT 1";

echo $sql;

mysql_query($sql) or die( mysql_error());

如果1更新页面集…不是打字错误,则这就是错误的原因。尝试找出这些错误的来源。

如果1更新页面集…不是打字错误,则这就是错误的原因。尝试找出这两个$sql字符串的来源。

您将连接这两个$sql字符串,因此最后的$sql字符串将包含一个类似以下内容的部分:

LIMIT 1update page SET
这是无效的SQL。此外,由于zerkms,mysql_查询不支持多个查询,因此您必须分别执行每个查询

$sql = "UPDATE page SET RegionId = 2 WHERE (RegionId = -1 OR RegionId = -3) AND Description LIKE '%Saskatoon%' LIMIT 1"
mysql_query($sql) or die( mysql_error());
$sql = "UPDATE page SET RegionId = 1 WHERE (RegionId = -1 OR RegionId = -3) AND Description LIKE '%Regina%' LIMIT 1";
mysql_query($sql) or die( mysql_error());

您将连接这两个$sql字符串,因此最后一个$sql字符串将包含如下部分:

LIMIT 1update page SET
这是无效的SQL。此外,由于zerkms,mysql_查询不支持多个查询,因此您必须分别执行每个查询

$sql = "UPDATE page SET RegionId = 2 WHERE (RegionId = -1 OR RegionId = -3) AND Description LIKE '%Saskatoon%' LIMIT 1"
mysql_query($sql) or die( mysql_error());
$sql = "UPDATE page SET RegionId = 1 WHERE (RegionId = -1 OR RegionId = -3) AND Description LIKE '%Regina%' LIMIT 1";
mysql_query($sql) or die( mysql_error());

正在删除查询中的分号,并且限制1与第二个更新查询的开头冲突

从PHP.net mysql\u查询手册页面:mysql\u查询发送一个唯一的查询多个查询不支持到服务器上与指定链接\u标识符关联的当前活动数据库


您需要对mysql\u查询进行两次调用才能获得所需的结果。

查询中的分号将被删除,限制1与第二次更新查询的开头冲突

从PHP.net mysql\u查询手册页面:mysql\u查询发送一个唯一的查询多个查询不支持到服务器上与指定链接\u标识符关联的当前活动数据库


您需要对mysql\u query进行两次调用才能获得所需的结果。

正如其他答案中所述,mysql\u query不支持多个查询,如果您想将其优化为一个查询,您可能需要重新考虑查询的工作方式

如果您愿意放弃限制1,您可以这样做:

$sql = "update page 
    SET RegionId = 2  WHERE (RegionId = -1 or RegionId = -3) and Description like '%Saskatoon%',
    SET RegionId = 1  WHERE (RegionId = -1 or RegionId = -3) and Description like '%Regina%'";
由于您在字符串上使用like作为最终条件,这可能会更新许多记录,因此我建议重新设计为使用ID,以便您可以使用更好的限制来设计查询,例如:

$sql = "update page 
    SET RegionId = 2  WHERE (`RegionId` = -1 or `RegionId` = -3) and `user` = '1',
    SET RegionId = 1  WHERE (`RegionId` = -1 or `RegionId` = -3) and `user` = '2'";

正如其他答案中所说,mysql_查询不支持多个查询,如果您想将其优化为一个查询,您可能需要重新考虑查询的工作方式

如果您愿意放弃限制1,您可以这样做:

$sql = "update page 
    SET RegionId = 2  WHERE (RegionId = -1 or RegionId = -3) and Description like '%Saskatoon%',
    SET RegionId = 1  WHERE (RegionId = -1 or RegionId = -3) and Description like '%Regina%'";
由于您在字符串上使用like作为最终条件,这可能会更新许多记录,因此我建议重新设计为使用ID,以便您可以使用更好的限制来设计查询,例如:

$sql = "update page 
    SET RegionId = 2  WHERE (`RegionId` = -1 or `RegionId` = -3) and `user` = '1',
    SET RegionId = 1  WHERE (`RegionId` = -1 or `RegionId` = -3) and `user` = '2'";

这个确切的代码不能抛出这样的错误这个确切的代码不能抛出这样的错误MySQL\u查询不支持stringOK中的多个查询,您已经发现,这一个查询来自哪里,但是:mysql\u query发送一个唯一的查询多个查询不受支持,所以他需要一个接一个地发送两个查询…mysql\u query不支持一个字符串中的多个查询OK,您已经发现,这一个查询来自何处,但是:mysql\u query发送一个唯一的查询多个查询不受支持,所以他需要一个接一个地发送两个查询…