ファイルをアップロードし、mysqli を使用して「画像」テーブルにデータを挿入する以下のコードを使用しています。
<?php
session_start();
$username="xxx";
$password="xxx";
$database="mobile_app";
$mysqli = new mysqli("localhost", $username, $password, $database);
/* 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();
//RETRIEVE IMAGEID FROM IMAGE TABLE
$lastID = $mysqli->insert_id;
//INSERT INTO IMAGE_QUESTION DATABASE TABLE
$imagequestionsql = "INSERT INTO Image_Question (ImageId, SessionId, QuestionId) VALUES (?, ?, ?)";
if (!$insertimagequestion = $mysqli->prepare($imagequestionsql)) {
// Handle errors with prepare operation here
}
$sessid = $_SESSION['id'] . ($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '');
$insertimagequestion->bind_param("sss", $lastID, $sessid, $_POST['numQuestion'][$i]);
$insertimagequestion->execute();
//IF ANY ERROR WHILE INSERTING DATA INTO EITHER OF THE TABLES
if ($insert->errno) {
// Handle query error here
}
$insert->close();
if ($insertimagequestion->errno) {
// Handle query error here
}
$insertimagequestion->close();
}
}
?>
たとえば、2 つの画像 "cat.png" と "dog.png" を "Image" データベース テーブルに挿入すると、次のように挿入されます。
ImageId ImageFile
220 cat.png
221 dog.png
(ImageId は自動インクリメントです)
とにかく私がやりたいことは、ファイルがアップロードされたときに、データが上のテーブルに挿入されるだけでなく、上に挿入された ImageId を取得して、下の「Image_Question」テーブルに配置できるようにしたいということですしたがって、次のようになります。
ImageId SessionId QuestionId
220 cat.png 1
221 dog.png 4
問題は、2番目のテーブル「Image_Question」にデータが挿入されていないことです。データが挿入されていない理由を知っている人はいますか? php ファイルにエラーはありません。
ファイルをアップロードするには、ユーザーは「QandATable.php」ページで ajax アップローダー用のファイルを選択します。ユーザーがアップロードをクリックすると、AJAX を使用して imageupload.php ページに移動し、そこでアップロードを行います。したがって、私が抱えている問題は、別のページにあるため、エラーが表示されないことです。