是否可以使用PHP mysqli_multi_query跟踪mysql脚本执行的进度?

时间:2016-03-02 17:12:13

标签: php mysql mysqli mysqli-multi-query

代码如下:

if (mysqli_multi_query($conn, $query)) {

    $token = $_POST['token'];

    $query = "
        INSERT INTO _usuarios (
            login_usuario, 
            nombre_usuario, 
            password_usuario, 
            id_perfil, 
            fecha_creacion_usuario, 
            id_usuarioCreate)
        VALUES (
            '$token',
            '$token',
            '$passCreate',
            6,
            NOW(),
            1
        );";

    if ($conn->query($query) === TRUE) 
    {
        echo "User created successfully";
    } 
    else 
    {
        echo "Error creating user: " . $conn->error.$query;
    }
}

每次我运行multiquery(在这种情况下是用于创建数据库的非常大的sql脚本)并且我尝试执行下面的INSERT时,我得到相同的消息:

'表_usuarios不存在'

我相信这是因为在我尝试插入时脚本还没有运行完毕。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

是的,这是可能的。

while ($mysqli->next_result());

在多次查询后运行此代码,使PHP脚本等待,直到执行最后一次查询。

请注意,对于第二个查询,您应该使用预准备语句,而不是直接在查询中添加变量。

答案 1 :(得分:-1)

关于错误消息,似乎您的表尚未创建。您可以执行以下操作,以便在一个步骤中创建它:

    $token = $_POST['token'];
    $token1 = $_POST['token1']; // I do not know it exactly anymore how you can retrieve all the POSTS

    SELECT $token, $token1, field3, field4, ... INTO _usuarios 

现在您的表格将同时创建和填充。