php - 数据未插入第二个表 (MYSQLi)

标签 php mysql database mysqli

我正在使用下面的代码上传文件并使用 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

问题是它没有向第二个表“Image_Question”中插入任何数据,有人知道为什么它没有插入任何数据吗? php 文件中没有错误。

要上传文件,用户在“QandATable.php”页面中为 ajax uploader 选择一个文件,当用户单击上传时,使用 AJAX 它将转到 imageupload.php 页面并在那里进行上传。所以我遇到的问题是不会出现错误,因为它们位于单独的页面上。

最佳答案

首先,保存从添加记录中获得的插入 ID(在 $insert->execute 之后):

$lastID = $mysqli->insert_id;

然后在后面引用 $lastID。

从下面提取我的评论:

$lastID = $insert->insert_id;

我认为这与交换句柄名称有关 - $mysqli、$insert 等。

希望我能正确阅读问题...

关于php - 数据未插入第二个表 (MYSQLi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615910/

相关文章:

php - 使用 fwrite 保存 .xls 文件

mysql - 数据库设计来存储用户评论及其评分

php - php mysql中的消息系统

php - 在我的用户类中使用数据库类

带有 jquery slidedown 的 PHP ajax

mysql - 从第一个表中选择 1 行,然后从其他表中选择 n 行,然后返回到第一个表并选择第 2 行,依此类推

mysql - 从 mysql 转换到 postgres 错误

php - 将 WordPress 的 PHP 版本从 7.2 更新到 8.1 时出现问题(缺少 MySQL 扩展)

php - HWIOAuthBundle 第一个示例的问题

mysql - 如何在 MySQL 中获取以毫秒为单位的当前时间戳?