Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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查询|为什么不起作用?_Mysql - Fatal编程技术网

从PHP运行多个MySQL查询|为什么不起作用?

从PHP运行多个MySQL查询|为什么不起作用?,mysql,Mysql,我试图从一个php文件在一些mysql数据库上运行多个查询。但是它不起作用。有人能指出我哪里出了问题吗 以下是php文件的内容: <? require_once('/home/xxxxxx/public_html/xxxxxx/dbconnect.php'); $query = " TRUNCATE TABLE db2.table1; INSERT INTO db2.table1 SELECT column1, column2, column3, column4

我试图从一个php文件在一些mysql数据库上运行多个查询。但是它不起作用。有人能指出我哪里出了问题吗

以下是php文件的内容:

<?
require_once('/home/xxxxxx/public_html/xxxxxx/dbconnect.php');
$query = "
TRUNCATE TABLE db2.table1;
INSERT INTO db2.table1
SELECT 
       column1, column2, column3, column4
       FROM db1.table1;

TRUNCATE TABLE db2.table2;
INSERT INTO db2.table2
SELECT 
       column1, column2, column3, column4 
       FROM db1.table2;
ANALYZE TABLE db2.table2;
";

$result = @mysql_query($query);    
?>  


提前感谢您的帮助。

您只进行了一次查询。阅读文档以了解更多信息

mysql_query()发送一个唯一的查询 (不支持多个查询) 到上的当前活动数据库 与服务器关联的服务器 指定的链接标识符

您应该将每个查询拆分为自己的字符串,并将其逐个发送到MySQL

$query1 = "TRUNCATE TABLE db2.table1;";
$query2 = "INSERT INTO db2.table1
SELECT 
       column1, column2, column3, column4
       FROM db1.table1;";

$query3 = "TRUNCATE TABLE db2.table2;";
$query4 = "INSERT INTO db2.table2
SELECT 
       column1, column2, column3, column4 
       FROM db1.table2;";
$query5= "ANALYZE TABLE db2.table2;";

$result1 = @mysql_query($query1);  
$result2 = @mysql_query($query2);  
$result3 = @mysql_query($query3);  
$result4 = @mysql_query($query4);  
$result5 = @mysql_query($query5); 

或者使用其他支持多个查询的接口函数。就我个人而言,我不知道是否有这样的事情。

在这种情况下,最重要的事情是调试:

  • 删除
    @
    前缀以查看错误
  • 如果mysql\u query()返回
    false
    ,则添加一个
    echo mysql\u error()
    以查看mysql的错误消息

在您的特定情况下,
mysql\u query()
不能执行多条语句。最简单的解决方案是使用两个单独的命令。

如果安装了mysqli,则可以在一个函数调用中执行多个查询: