Я создаю форму html для вставки информации и загрузки имени файла изображения в две таблицы Mysql одновременно. Код php, который я использую для регистрации пользователя и загрузки изображений в папку с изображениями, работает хорошо, но я не смог правильно добавить одновременно идентификатор из другой таблицы.
I нашел несколько вопросов по этому поводу, но я не нашел правильного способа решить эту проблему:
- Как вставить несколько значений в таблицу в php
- вставка нескольких строк с помощью массива php в mysql
- Вставка нескольких строк в таблицу с использованием PHP
- Как вставить несколько строк таблицы в базу данных, используя php
Ниже приведены две таблицы, которые демонстрируют, что я делаю:
users_tbl
userID | username
------------------
01 | john
02 | Marie
03 | Joseph
xx | xxxxx
------------------
И ниже таблица, которая вызывает images_tbl , которая получает имя изображения:
images_tbl
id | imageName
-------------------------
01 | my_pic1.jpg
02 | my_pic2.jpg
03 | my_pic3.jpg
04 | my_pic4.jpg
05 | img-1.jpg
06 | img-2.jpg
-------------------------
То, что я хотел бы сделать, это вставить один столбец в images_tbl , который вызывает userID (ключ доступа) users_tbl просто для того, чтобы получить недавно созданный последний идентификатор пользователя в то же время, когда я зарегистрировался, и вставить имя загруженного изображения в таблицу images_tbl :
images_tbl
id | userID |imageName
-------------------------
01 | 01 |my_pic1.jpg
02 | 01 |my_pic2.jpg
03 | 01 |my_pic3.jpg
04 | 02 |img02.jpg
05 | 02 |img03.jpg
xx | xx |xxxxxxx.jpg
-------------------------
На основе приведенной выше таблицы код php ( insert. php), который я использую для регистрации пользователя в таблице ( user_tbl ) и в то же время вставьте имя изображения в таблицу images_tbl , как показано ниже:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("INSERT INTO users_tbl (username) VALUES (?)");
$stmt->bind_param("s", $username);
// set parameters and execute
$firstname = $_POST['username'];
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
?>
<?php
if(!empty($_FILES)){
// Include the database configuration file
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// File path configuration
$targetDir = "uploads/";
$fileName = $_FILES['file']['name'];
$targetFilePath = $targetDir.$fileName;
// Here is the part of this code that i'm not be able to fix this:
$lastUserID = "SELECT userID FROM users_tbl ORDER BY userID DESC LIMIT 1";
// Upload file to server
if(move_uploaded_file($_FILES['file']['tmp_name'], $targetFilePath)){
// Insert file information in the database - $fileName and $lastUserID
$insert = $db->query("INSERT INTO images_tbl (imageName, userID) VALUES ('".$fileName."','".$lastUserID."')");
}
}
?>
Наконец, код формы html, который я использую для этого:
<form action="insert.php" method="post" enctype="multipart/form-data" >
<input type="text" name="username" id="username" />
<br>
<div class="dropzone"></div>
<input type="submit" name="submit" id="startUpload" value="ADD">
</form>
Как и в приведенной выше форме, я использую Dropzone. js для загрузки файлов изображений и, как я уже сказал, код php, который я использую, загружает файлы изображений в загружает папку и вставляет данные в users_tbl , но не вставляет userID в столбец userID таблицы images_tbl .
Как можно я адаптирую php код вставки. php для правильной вставки идентификатора пользователя в images_tbl таблицу? Любые советы?