2017-05-30 15 views
-1

php mysqliの2つのテーブルにデータを挿入しようとしていますが、最初のテーブルにデータを挿入しますが、2番目のテーブルに他のカラム。ここでphp mysqliは2つのテーブルにデータを挿入します

は私のコードです:

$sql = "INSERT INTO socio (name, age, dob, gender, year, stgroup, stadd) VALUES ('$stnam', '$stage', '$stdob', '$stgen', '$styer', '$stGr', '$stadd')"; 
$sql1 = "INSERT INTO parta (name, stgroup, year) VALUES ('$stnam', '$stGr', '$styer')"; 

$result = mysqli_query($con, $sql); 
$result = mysqli_query($con, $sql1); 

は、上記のコードでは何も悪いことですか?助言がありますか?

+0

これは何かエラーを示していますか? –

+0

すべてのデータが最初のテーブルにのみ挿入され、2番目のテーブルには挿入されません – Kanna

+1

テーブル構造を表示して –

答えて

1

としての第2の結果の名前を変更しました、partaテーブルのカラムの一部がnullにすることになっていないことが起こるかもしれません。あなたが提供したコードでは、エラー処理が全くないので、それを伝えるのは難しいです。トランザクションを使用し、適切なエラー処理を使用し、プリペアドステートメントを使用することもできます。

このコードで試してみてください。

<?php 
$con = new mysqli("..."); // you should know this part already 

$success = false; 
try { 

    $con->autocommit(FALSE); 

    $con->begin_transaction(); 

    if ($sql = $con->prepare("INSERT INTO socio (name, age, dob, gender, year, stgroup, stadd) VALUES (?,?,?,?,?,?,?)")) { 
     $sql->bind_param('sissss', $stnam, $stage, $stdob, $stgen, $styer, $stGr, $stadd); 
     if (!$sql->execute()) { 
      throw new Exception($sql->error); 
     } 

     if ($sql_two = $con->prepare("INSERT INTO parta (name, stgroup, year) VALUES (?,?,?)")) { 
      $sql_two->bind_param('sss', $stnam, $stGr, $styer); 
      if (!$sql_two->execute()) { 
       throw new Exception($sql_two->error); 
      } 
     } 
    } 

    if ($con->commit()) { 
     $success = true; 
    } else { 
     throw new Exception('Transaction commit failed...'); 
    } 
}catch (Exception $ex) { 
    try { 
     // something went wrong,rollback and display message 
     $con->rollback(); 
     echo $ex->getMessage(); 
    } 
    catch (Exception $e) { 
     echo $e->getMessage(); 
    } 
} 
$con->autocommit(TRUE); 

if ($success) { 
    echo "data successfully inserted"; 
} 
?> 
+0

あなたはデータが挿入されていない理由で他のフィールドの値がnullであるとは言わなかったので、ちょうどいいですね。私はそれをnullに変更し、今のところ動作します。 – Kanna

-3

これを試してください。 2つの異なるアクションに対して同じ変数名を使用している可能性があります。私はちょうど私が本当にあなたのコードと全く間違っているものを見ることができません$結果1

$sql = "INSERT INTO socio (name, age, dob, gender, year, stgroup, stadd) VALUES ('$stnam', '$stage', '$stdob', '$stgen', '$styer', '$stGr', '$stadd')"; 

$sql1 = "INSERT INTO parta (name, stgroup, year) VALUES ('$stnam', '$stGr', '$styer')"; 

$result = mysqli_query($con, $sql); 
$result1 = mysqli_query($con, $sql1); 
+1

変数名はここでは無効です。 OPは変数をチェックしたり、それらを使用したりしません。あなたは、準備された陳述にOPのコードを少なくとも改良することができます。 – Akintunde007

+0

私はすでにそれを試してみましたが、そのようにはうまくいかないでしょう。 – Kanna

関連する問題