1

TABLE1からの最新の挿入の値を、複数のエントリを含むTABLE2への後続のMULTIPLE挿入ステートメントに追加したいのですが、MySQLでは、TABLE2に追加された各エントリに対して0(ゼロ)を取得しています。

mysql_insert_id最初のMySQLクエリが実行された後、を変数に格納する必要があることはわかっています。したがって、次のよう$post_idに、最初のステートメントの直後に呼び出される変数を含めました。mysql_query()

// If the submit button is pressed in the HTML form
if (isset($_POST['submit_event'])) {
    // First SQL Statement
    if (!mysql_query($sql1,$con))
      {
      die('Error: ' . mysql_error());
      }
    echo "SQL 1 SUCCESS! 1 record added<br/>";

    // A variable to store the id from the last MySQL query
    // This is the first time I have declared this variable
    $post_id = mysql_insert_id();

    // Second SQL Statement which utilises the variable
    if (!mysql_query($sql2,$con))
     {
      die('Error: ' . mysql_error());
    }
    echo "SQL 2 SUCCESS! 1 record added<br/>";
    echo "Finito!<br/>";
    mysql_close($con);
}

私が書いたTABLE2へのこのSQLの複数の挿入ステートメントは次のとおりです。

$sql2="INSERT INTO TABLE2 (post_id, meta_key, meta_value)
    VALUES
    ($post_id,'key 1','value 1'),
    ($post_id,'key 2','value 2'),
    ($post_id,'key 3','value 3')
";

ただし、実際にMySQLを調べると、これらすべて(正しいように見えます)にもかかわらず、TABLE2のすべてのエントリのpost_idは0(ゼロ)として出力されますか?

どこがおかしいの?ヘルプ!

4

3 に答える 3

0

結局答えが見つかりました!$sql2文字列ステートメントを前に配置したため$post_id = mysql_insert_id();、PHPがそれをコードに挿入できないことに気付きました。したがって、それを行う正しい方法は次のとおりです。

// If the submit button is pressed in the HTML form
if (isset($_POST['submit_event'])) {
// First SQL Statement
if (!mysql_query($sql1,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "SQL 1 SUCCESS! 1 record added<br/>";

// A variable to store the id from the last MySQL query
// This is the first time I have declared this variable
$post_id = mysql_insert_id();

// Place the SQL statement AFTER the mysql_insert_id() variable
$sql2="INSERT INTO TABLE2 (post_id, meta_key, meta_value)
VALUES
($post_id,'key 1','value 1'),
($post_id,'key 2','value 2'),
($post_id,'key 3','value 3')
";

// Second SQL Statement which utilises the variable
if (!mysql_query($sql2,$con))
 {
  die('Error: ' . mysql_error());
}
echo "SQL 2 SUCCESS! 1 record added<br/>";
echo "Finito!<br/>";
mysql_close($con);
}
于 2012-05-07T20:14:01.917 に答える
0

これはばかげた質問かもしれませんが、コードからは明らかではありません。$post_id値を$sql2文字列に挿入していますか?

$sql2="INSERT INTO TABLE2 (post_id, meta_key, meta_value)
    VALUES
    (" . $post_id . ",'key 1','value 1'),
    (" . $post_id . ",'key 2','value 2'),
    (" . $post_id . ",'key 3','value 3') "; 
于 2012-04-30T12:10:57.550 に答える
0
$sql2="INSERT INTO TABLE2 (post_id, meta_key, meta_value)
    VALUES
    ({$post_id},'key 1','value 1'),
    ({$post_id},'key 2','value 2'),
    ({$post_id},'key 3','value 3')
";
于 2012-05-01T18:37:35.707 に答える