2017-02-24 4 views
0

問題は、multi_queryを使用して複数のテーブルを作成しようとしていることと、その2つのテーブルの2つのレジスタの直後です。コードを実行すると、DBにテーブルが作成されますが、レジスタを作成することはできません。私は単純なクエリですべてを行うと、コードは完全に機能します。私はここに何が欠けているのかわかりません...コードはここにあります:テーブルにレジスタを作成するときにmulti_queryが動作しない

if (isset($_POST['usercp']) && !empty($_POST['usercp'])) { 

    if (isset($_POST['passlogin']) && !empty($_POST['passlogin'])) { 

     $conn = mysqli_connect($host, $user, $pw, $db); 

     if (!$conn) { 
      echo "<script language='javascript'>alert('Usuario de CPanel incorrecto!!');window.location.href = 'http://here-a-page.com/';</script>"; 
     } 
     else { 

      $sql = "CREATE TABLE usercp (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      usuario VARCHAR(30) NOT NULL 
      );"; 
      $sql = $sql . "CREATE TABLE numlink (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      Link VARCHAR(30) NOT NULL 
      );"; 
      $sql = $sql . "CREATE TABLE login (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      Validacion_Pass VARCHAR(30) NOT NULL 
      );"; 
      $file = fopen("UsuarioCpanel.txt", "w"); 
      fwrite($file, $UserCp . PHP_EOL); 
      fclose($file); 

      if ($conn->multi_query($sql)) { 
       $PassLogin = $_POST['passlogin']; 
       $consulta = " INSERT INTO usercp(usuario) VALUES('$UserCp');"; 
       $consulta = $consulta . "INSERT INTO login(Validacion_Pass) VALUES('$PassLogin');"; 
       if ($conn->multi_query($consulta)) { 
         header('location: index.php'); 
        } 
       else{ 
        echo "Ocurrio un error creando los registros"; 
       } 
      } 
      else{ 
       echo "Error creating table: " . $conn->error; 
      } 

     } 
    } 
    else{ 
     echo "<script language='javascript'>alert('Debes poner el Password que utilizaras con el Login del Cloaking System');window.location.href = 'http://here-a-page.com/';</script>"; 
    } 
} 
else { 

    echo "<script language='javascript'>alert('Debes poner tu Usuario de CPanel');window.location.href = 'http://here-a-page.com/';</script>"; 
} 

私は似たような質問で私の問題の解決策を見つけました。 @furasは、あなたがやりたいmulti_queryの後に "while(){}"でこの問題を解決しました。何らかの理由で、multi_queryを自然に複数回実行することはできません。これを行うには、すべてのmulti_queryの後に次の行を書く必要があります。

while(mysqli_more_results($link)){ 
    $result = mysqli_store_result($link); 
    mysqli_next_result($link); 
} 
+0

をあなたはなぜあなただ​​けでは、単純なクエリ溶液で保管しないで再びテーブルを作成したいと再び – gaurav

+0

されています作品ですか? –

+0

@ gaurav $ UserCpは自分のコードの上にあり、$ _POST []から値を取得します。このコードで私の意図は、一度だけ実行することです...それは私が取り組んでいるスクリプトのインストーラのようなものです。とにかく私はしばらくの間、問題を解決しました...何らかの理由で、multi_queryは自然に複数回実行できません。これを行うには、すべてのmulti_queryの後にこれを置く必要があります: while(mysqli_more_results($ link)){ $ result = mysqli_store_result($ link); mysqli_next_result($ link); } これは@_furasのアイデアだったので、彼はこの解決法を私のような問題に託しました。それはちょうど優れた働いた!!!。 –

答えて

0

私の場合と同様の質問で私の問題の解決策が見つかりました。 @furasは、あなたがやりたいmulti_queryの後に "while(){}"でこの問題を解決しました。何らかの理由で、multi_queryを自然に複数回実行することはできません。あなたはすべてのmulti_queryの後にこの行を記述する必要があることを行うには:あなたは、なぜ `$ UserCp`&を定義

while(mysqli_more_results($link)){ 
    $result = mysqli_store_result($link); 
    mysqli_next_result($link); 
} 
関連する問題