2017-02-17 7 views
-2

私はプロジェクトに取り組んでいますが、私は立ち往生しています。私はaq quesionの答えと質問をウェブサイトのFAQページから変更するシステムを作っています。そのために私はSQLで2つのテーブルを使用します。 1つは回答を含み、もう1つは質問が含まれ、IDにはその回答のために接続されている番号の列が含まれています。ビット私は一度に2つのSQLを実行することはできません、誰かが私は問題を解決することができます。私は自分の答えを更新する必要があります - 最初に新しい答えから質問をテーブルに接続するIDを取得する。最初のIDからの複数のクエリ

ありがとうございます。

表は、更新のために enter image description here

表の質問 enter image description here

コードを回答

<?php 
include('../inc/connection.php'); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

if (isset($_POST['fields'])) { 
    foreach ($_POST['fields'] as $item) { 
     $values[] = $db->real_escape_string($item); 
    } 

    var_dump($values); 

    if ($stmt = $db->prepare("INSERT INTO AntwoordenFAQ (nl_antwoord,fr_antwoord,en_antwoord) VALUES (?,?,?);")) { 

     $stmt->bind_param('sss', $values[0], $values[1], $values[2]); 
     if ($stmt->execute()) { 
      if ($stmt->affected_rows == 1) { 
       $IDinsert = $db->insert_id; 
       if ($stmt = $db->prepare("INSERT INTO VragenFAQ (nl_vraag, fr_vraag, en_vraag) VALUES (?,?,?);")) { 
        $stmt->bind_param('sss', $values[3], $values[4], $values[5]); 
        if ($stmt->execute()) { 
         if ($stmt->affected_rows == 1) { 
          echo TRUE; 
         } 
         else { 
          echo $IDinsert; 
         } 
        } 
        $stmt->close(); 
       } 
      } 
      else { 
       echo FALSE; 
      } 
     } 
     $stmt->close(); 
    } 
    $db->close(); 
} 
} 
exit(); 
?> 
+0

mysqli_errorsを確認します。あなたはすべてがうまくいくと仮定しています。 – aynber

+0

何が問題ですか? 「2つのSQLを一度に実行できない」とはどういう意味ですか?サンプルデータと期待される出力を見せてください。 \t [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [**スタート**] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を改善し、より良い回答を得る方法を学ぶことができます。 –

+0

'私が問題を解決するのを手伝ってください.'もっと読むhttp://stackoverflow.com/questions/175066/sql-server-is-it-possible-to-insert-into-two-tables-at-the-same-time #175138 – JustOnUnderMillions

答えて

0

一度に2つのステートメントを実行できないと言うことは明らかですが、実際には当てはまりません。 SQLは2つの文を論理的に一度に行う方法を提供します。つまり、データベースに対する他のクエリには何も表示されず、両方のクエリの結果も表示されません。これはトランザクションで行います。それは次のように機能します。

BEGIN TRANSACTION; 

-- On systems you might need to lock tables here on others it 
-- happens automatically 

-- QUERY 1 
INSERT -- ... 
; 

-- QUERY 2 
INSERT -- ... 
; 

COMMIT TRANSACTION; 

これは、(例として)銀行が別のアカウントから現金を動かすかもしれない方法です - 2つのアカウントは、現金または全くアカウントが現金を持っていた瞬間は決してありません。銀行の例では、2つ(またはそれ以上)のクエリはUPDATEクエリになります。

関連する問題