Mysqli多查询不起作用,尽管出现正确形成

时间:2017-08-18 01:15:26

标签: php mysqli

我正在处理与我的数据库交互的Php函数,以便为特定用户添加特化。我认为使用mysqli多查询是实现这一目标的最佳方式。不幸的是,查询的代码都没有正确执行。 db连接正在顺利运行,并且在键入我的数据库Web应用程序时可以进行单独查询。

function assign_specialties($id, $specialties) {
    $conn = new mysqli($GLOBALS['servername'], $GLOBALS['username'], $GLOBALS['password'], 'visio');
    if ($conn->connect_error) {
       die("$conn->connect_errno: $conn->connect_error");
    }
    $query = "";
    $id = mysqli_real_escape_string($conn, $id);
    foreach ($specialties as $specialty) {
        $specialty = mysqli_real_escape_string($conn, $specialty);
        $query .= " INSERT INTO member_specialization (member_id, specialization_name) VALUES ('$id', '$specialty');";
    }
    //$query = mysqli_real_escape_string($conn, $query);
    if ($conn->multi_query($query)) {
        echo "<script> alert('yes')</script>";
    }
    else {
        echo "<script> alert('$query')</script>";
    }

    $conn->close();
}

我还有一个分号分隔的每个查询。这是我第一次尝试多次查询,因此我知道它必须是用户错误,我只是无法弄清楚该错误是什么。

1 个答案:

答案 0 :(得分:0)

http://php.net/manual/en/mysqli.multi-query.php

  

应正确转义查询中的数据。

您在整个查询中使用mysqli_real_escape_string(),唯一需要转义的字符串是您的变量$ special。

此外,您在函数中使用过程样式和面向对象样式。无论您喜欢哪种风格,都应该保持一致。

$query = "";
foreach ($specialties as $specialty) {
    $specialty = mysqli_real_escape_string($conn, $specialty);
    $query .= "INSERT INTO member_specialization
              (member_id, specialization_name) 
              VALUES
              ('$id', '$specialty');";
}

mysqli_multi_query($conn, $query);