Php MySQLi查询在某些多个查询上失败

Php MySQLi查询在某些多个查询上失败,php,sql,Php,Sql,EDIT:我刚刚通过将插入合并到一个查询中解决了这个问题,但我仍然想知道为什么在一开始就失败了,以防以后再次遇到它。 我目前正在使用mysqli的query命令提交多个查询,因为我不需要像multi_query允许的那样循环查询结果。我没有使用multiquery的主要原因是,在不关闭和重新打开数据库的情况下多次使用它时遇到问题。所以如果你有解决这个问题的办法,也许它能解决这个问题 由于我在使用multi_query时遇到困难,我最终使用了query并将多个查询放入其中,如下所示: $sql =

EDIT:我刚刚通过将插入合并到一个查询中解决了这个问题,但我仍然想知道为什么在一开始就失败了,以防以后再次遇到它。


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

由于我在使用multi_query时遇到困难,我最终使用了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;
如果您可以解释如何正确使用多个多重查询,或者告诉我为什么一个有效,而另一个无效,这两种方法都是完全可以接受的答案。

尝试而不是mysqli\u query函数。

它执行一个或多个由分号连接的查询。

您会遇到什么样的错误?您遗漏了问题中最重要的信息之一。。。错误消息。如果我们能确切地知道问题所在,我们可以更好地帮助您。这是类似于“第3行“插入作业”附近的错误\u注释(ForeignJob、ForeignUser、Type、Time、Content)”“我没有使用multiquery的主要原因是,我在不关闭和重新打开数据库的情况下多次使用它时遇到问题。因此,如果你有一个解决这个问题的方法,也许它能解决这个问题。”现在,我肯定认为你是对的,这里应该使用multi_查询,但在这一点上,我真的很想知道为什么它只工作了一次,而不是当我第二次做同样的事情时