【问题标题】:SQL syntax is ok but php still throw errorSQL语法没问题,但php仍然抛出错误
【发布时间】:2011-05-07 09:45:04
【问题描述】:

当我在 phpmyadmin 中手动检查时,我的 sql 查询工作正常,但是当我尝试通过 php mysql_query 处理它时,我会遇到语法错误。如何解决这个问题?

错误信息:

Invalid query:
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 scores( user_id ) VALUES (LAST_INSERT_ID( ))' at line 1 
Whole query:
INSERT INTO users (id_fb, name, first_name, last_name, email, link, first_login) 
VALUES ('1000001010101010', 'Bart Roza', 'Bart', 'Roza', 'lalalala@gmail.com','http://www.facebook.com/profile.php?id=1000001010101010','2011-05-07 11:15:24'); 
INSERT INTO scores( user_id ) VALUES (LAST_INSERT_ID( ));

我的php函数:

public function createUser()
{
    $time = date("Y-m-d H:i:s");

    $insert = "INSERT INTO users (id_fb, name, first_name, last_name, email, link, first_login) VALUES (" .
              "'" . $this->me['id'] . "', " .
              "'" . $this->me['name'] . "', " .
              "'" . $this->me['first_name'] . "', " .
              "'" . $this->me['last_name'] . "', " .
              "'" . $this->me['email'] . "'," .
              "'" . $this->me['link'] . "'," .
              "'" . $time . "'); " .
              "INSERT INTO scores( user_id ) VALUES (LAST_INSERT_ID( ));";

    $result = mysql_query($insert);
    if (!$result) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . $insert;
        die($message);
    }
}

编辑:

感谢您的解决方案!

【问题讨论】:

  • 如果遇到 mySQL 查询问题,请始终查看最终生成的查询,而不是 PHP 代码。 PHP代码在这里没有意义
  • @Pekka:在这种情况下 - 它是有意义的。

标签: php mysql sql mysql-error-1064


【解决方案1】:

由于mysql_query 只接受一个查询,您需要将查询字符串拆分为 2 个单独的查询,并通过 2 个mysql_query 调用来执行。

【讨论】:

    【解决方案2】:

    您不能使用mysql_query 函数一次运行多个查询。您必须使用单独的mysql_query 调用来运行这两个查询

    mysql_query() 发送一个唯一的查询 (不支持多查询)

    【讨论】:

      【解决方案3】:

      正如@zerkms 和@Shakti 所说,mysql_query 不支持多个查询。如果您想使用此类功能,请考虑迁移到 mysqli。它支持mysqli_multi_query在单个数据包中进行多个查询

      【讨论】:

        猜你喜欢
        • 2013-03-12
        • 1970-01-01
        • 1970-01-01
        • 2020-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-01
        • 1970-01-01
        相关资源
        最近更新 更多