2

ファイルをアップロードし、mysqliを使用して「Image」テーブルにデータを挿入する以下のコードを使用しています。

<?php
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    die();
}

$result = 0;

//UPLOAD IMAGE FILE

move_uploaded_file($_FILES["fileImage"]["tmp_name"], "ImageFiles/" . $_FILES["fileImage"]["name"]);

$result = 1;

//INSERT INTO IMAGE DATABASE TABLE

$imagesql = "INSERT INTO Image (ImageFile) VALUES (?)";

if (!$insert = $mysqli->prepare($imagesql)) {
    // Handle errors with prepare operation here
}

//Dont pass data directly to bind_param store it in a variable
$insert->bind_param("s", $img);

//Assign the variable
$img = 'ImageFiles/' . $_FILES['fileImage']['name'];

$insert->execute();

$insertimagequestion->execute();

//IF ANY ERROR WHILE INSERTING DATA INTO EITHER OF THE TABLES
if ($insert->errno) {
  // Handle query error here
}

$insert->close();


$lastID = $mysqli->insert_id;

 $imagequestionsql = "INSERT INTO Image_Question (ImageId, SessionId, QuestionId) 
    VALUES (?, ?, ?)";


    if (!$insertimagequestion = $mysqli->prepare($imagequestionsql)) {
      // Handle errors with prepare operation here
       echo "Prepare statement err";
    }

$sessid =  $_SESSION['id'] . ($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '');

$insertimagequestion->bind_param("isi",$lastID, $sessid, $_POST['numQuestion'][$i]);

        $insertimagequestion->execute();

                if ($insertimagequestion->errno) {
          // Handle query error here
        }

        $insertimagequestion->close();

}
?>

たとえば、2つの画像「cat.png」と「dog.png」を「Image」データベーステーブルに挿入すると、次のように挿入されます。

  ImageId         ImageFile

    220             cat.png
    221             dog.png

(ImageId is an auto increment)

とにかく私がやりたいのは、ファイルがアップロードされるときに、データが上のテーブルに挿入されるだけでなく、上に挿入されたImageIdを取得して、下の「Image_Question」テーブルに配置できるようにすることです。したがって、次のようになります。

ImageId         SessionId      QuestionId

    220            AAA             1 
    221            AAB             4

ただし、Image_Questionテーブルには何も挿入されていません。画像をアップロードすると、「Image」テーブルにデータが挿入されるだけでなく、「Image_Question」テーブルにもデータが挿入されるようになりますか?

4

1 に答える 1

1

私が離れている場合は許してください、しかしphpは順番に実行されません、言い換えれば、これはすべきではありません:これを追いかけてください$insertimagequestion->execute();if (!$insertimagequestion = $mysqli->prepare($imagequestionsql)) ?おそらく、最初に発生$insertimagequestion->execute();するのは挿入IDを消去することです。印刷するものを入れて、insert_idを取得していることを確認します。

于 2012-09-18T23:50:16.517 に答える