【问题标题】:multi sql command not working into PHP多 sql 命令不适用于 PHP
【发布时间】:2013-02-22 13:00:58
【问题描述】:

我有任何用于从表的字段创建备份的 sql 命令,我在 phpmyadmin 中使用这个 bewlow 命令:

SQL:

CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM sale_khomsi;
UPDATE tmptable_1 SET id= NULL , faal= 1;
INSERT INTO sale_khomsi SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

这可以正常工作,但是在将此命令运行到 az 之类的 php 代码中之后:

PHP:

$reslut=mysql_query("CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM sale_khomsi;
UPDATE tmptable_1 SET id= NULL , faal= 1;
INSERT INTO sale_khomsi SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;");

不工作。

MYSQL 进入 PHPMYADMIN 的结果:

CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM sale_khomsi;# 4 rows affected.
UPDATE tmptable_1 SET id= NULL , faal= 1;# 4 rows affected.
INSERT INTO sale_khomsi SELECT * FROM tmptable_1;# 4 rows affected.
DROP TEMPORARY TABLE IF EXISTS tmptable_1;# MySQL returned an empty result set (i.e. zero rows).

【问题讨论】:

  • 只是一个旁注可能想要将mysql_* 更改为mysqli_* 或其他类似pdo的东西
  • 你不能在单个mysql_query()中执行多个语句;

标签: php mysql


【解决方案1】:

在 mysql 中没有执行多查询的选项。但如果你选择 mysqli,它就在那里。

mysqli_multi_query()

但是如果只想使用mysql,则意味着您可以为这些事情进行程序。

【讨论】:

    【解决方案2】:

    phpMyAdmin 使用 ;作为对数据库的调用之间的分隔符。因此,在 phpMyAdmin 中输入该字符串将导致 4 个查询运行,而不是像您这样的大规模查询。你需要把它分解。

    $result = mysql_query("CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM sale_khomsi");
    
    $result = mysql_query("UPDATE tmptable_1 SET id= NULL , faal= 1");  
    
    $result = mysql_query("INSERT INTO sale_khomsi SELECT * FROM tmptable_1");
    
    $result = mysql_query("DROP TEMPORARY TABLE IF EXISTS tmptable_1");
    

    这应该会给你想要的结果。当然,您需要检查结果的结果以确保查询成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 2017-10-20
      • 2018-03-31
      • 1970-01-01
      相关资源
      最近更新 更多