2016-03-02 55 views
2

代碼如下:是否有可能使用PHP mysqli_multi_query跟蹤執行mysql腳本的進度?

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不存在」

我認爲,這是因爲劇本尚未完成由我試圖做插入時運行。

任何想法?

+1

該錯誤表示您沒有在選定的數據庫上創建表_usuarios,也許您應該在連接上驗證是否選擇了所需的數據庫。 – Rhopercy

+0

這是使用MySQL和PHP的錯誤方法。您可以接受SQL注入。使用PDO。 – meagar

回答

1

是的,這是可能的。

while ($mysqli->next_result()); 

在多重查詢後運行此代碼,使PHP腳本等待,直到執行最後一個查詢。

請注意,對於第二個查詢,您應該使用準備語句,而不是直接在查詢中添加變量。

+0

非常感謝,您的解決方案工作得非常好! –

-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 

現在您的表格將同時創建並填充。

相關問題