1

我在 php 中使用原始(无更改)ezsql-mysql 类。我的数据库引擎是innodb。一切都很好,但一页中有一个查询。当我从其他一些工作页面复制代码库时,已经添加了类和函数等所需的一切。就在问题查询之前,还有另一个正常工作的查询。当我直接将其复制粘贴到 phpmyadmin 时,有问题的查询也在 php 文件之外工作。

    $db->query("
    BEGIN;
    INSERT INTO places (name, latitude, longitude) 
      VALUES ('Place of $event_name', '$latitude', '$longitude');
    INSERT INTO events (place_code, event_name, start_time, owner_id) 
      VALUES (LAST_INSERT_ID(),'$event_name', '$start_time', '$owner_id');
    COMMIT;
    ");
//this echo part was just for copying to phpmyadmin
    echo "
    BEGIN;
    INSERT INTO places (name, latitude, longitude) 
      VALUES('Place of $event_name', '$latitude', '$longitude');
    INSERT INTO events (place_code, event_name, start_time, owner_id) 
      VALUES(LAST_INSERT_ID(),'$event_name', '$start_time', '$owner_id');
    COMMIT;
    ";

每次我使用该页面时,我的服务器都会在该页面的目录中生成一个错误日志。错误是

    [29-Sep-2013 12:58:00] PHP Warning:  You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO places (name, latitude, longitude) 
  VALUES ('Place of asd', '39.76' at line 2 in /home7/eyselnet/public_html/business/injoin/demo/sql/ez_sql_mysql.php on line 233

当我在 phpmyadmin 中复制并粘贴相同的查询时,就会发生这种情况

BEGIN;# MySQL returned an empty result set (i.e. zero rows).
 INSERT INTO places (name, latitude, longitude) VALUES('Place of asd', '39.7617657', '30.5056083');# 1 row affected.
 INSERT INTO events (place_code, event_name, start_time, owner_id) VALUES(LAST_INSERT_ID(),'asd', '1357884000', '1');# 1 row affected.
 COMMIT;# MySQL returned an empty result set (i.e. zero rows).

你能帮我找出问题所在吗?在最坏的情况下,我可以更改我的代码以使其以不同的方式工作。但我不是这样寻求帮助来理解的。因为它看起来很奇怪,在 phpmyadmin 上正常工作的查询在 php 文件中有问题。

提前致谢。

4

1 回答 1

1

我不知道提到的类,但是mysql(i)php 中的函数(我猜也是 PDO)只允许您在每个函数调用中执行一个查询。因此,您需要将您的BEGIN;COMMIT;拥有的 MySQL 查询分开。

编辑:你当然也必须INSERTs分开做这两个。

于 2013-09-29T18:58:41.303 回答