MySQLi查询在多个查询上失败

时间:2012-08-08 16:54:14

标签: php sql

编辑:我刚刚通过将INSERTS合并到一个查询中解决了这个问题,但我仍然想知道为什么这会在以后再次遇到它时失败。 < / p>

我目前正在使用mysqli的query命令提交多个查询,因为我不需要像multi_query允许那样遍历查询结果。我没有使用multiquery的主要原因是因为我在不关闭和重新打开数据库的情况下多次使用它时遇到了问题。所以如果你有解决这个问题的方法,也许它会解决这个问题。

由于我对multi_query的困难,我最终只使用了查询并在其中放入了多个查询,如下所示:

$sql = "INSERT INTO customers_attributes (ForeignCustomer, Type, Content, Date)
            VALUES ($customerID, 'PhoneNumber', '$phoneNumber', NOW());
            INSERT INTO customers_attributes (ForeignCustomer, Type, Content, Date)
            VALUES ($customerID, 'Email', '$email', NOW());
            INSERT INTO customers_attributes (ForeignCustomer, Type, Content, Date)
            VALUES ($customerID, 'CanEmail', '$emailMe', NOW());
            INSERT INTO customers_attributes (ForeignCustomer, Type, Content, Date)
            VALUES ($customerID, 'CanText', '$textMe', NOW());
        ";
    $mysqli->query($sql);

现在,上面的代码工作,但是,当我尝试使用此代码执行完全相同的概念时:

$sql = "INSERT INTO jobs_notes (ForeignJob, ForeignUser, Type, Time, Content)
        VALUES ($jobID, 0, 'IssueDescription', NOW(), '$issueDescription');
        INSERT INTO jobs_notes (ForeignJob, ForeignUser, Type, Time, Content)
        VALUES ($jobID, 0, 'UserPassword', NOW(), '$userPassword');
        ";
if($mysqli->query($sql) === TRUE)
    echo "Good";
else
    echo $mysqli->error;

它抛出了关于SQL第三行语法的一般错误。我已经用变量打印了查询,并直接在phpMyAdmin中运行,并且运行正常,所以查询很好,问题似乎是将两个查询放在一起,即使它第一次工作。为了测试这个,我尝试了下面的代码,它可以运行:

$sql = "INSERT INTO jobs_notes (ForeignJob, ForeignUser, Type, Time, Content)
        VALUES ($jobID, 0, 'IssueDescription', NOW(), '$issueDescription');
        ";
echo "
$sql
";
if($mysqli->query($sql) === TRUE)
    echo "Good";
else
    echo $mysqli->error;
$sql = "INSERT INTO jobs_notes (ForeignJob, ForeignUser, Type, Time, Content)
        VALUES ($jobID, 0, 'UserPassword', NOW(), '$userPassword');";

if($mysqli->query($sql) === TRUE)
    echo "Good";
else
    echo $mysqli->error;

如果您可以解释如何为我的目的正确使用多个多查询,或者告诉我为什么一个工作而另一个不工作,那么这两个都是完全可以接受的答案。

1 个答案:

答案 0 :(得分:0)

尝试 mysqli_multi_query 而不是 mysqli_query 功能。
它执行一个或多个查询,这些查询由分号连接。