Как улучшить мой PHP скрипт для вставки в несколько таблиц? - PullRequest
0 голосов
/ 06 апреля 2020

Я создаю форму html для вставки информации и загрузки имени файла изображения в две таблицы Mysql одновременно. Код php, который я использую для регистрации пользователя и загрузки изображений в папку с изображениями, работает хорошо, но я не смог правильно добавить одновременно идентификатор из другой таблицы.

I нашел несколько вопросов по этому поводу, но я не нашел правильного способа решить эту проблему:

  1. Как вставить несколько значений в таблицу в php
  2. вставка нескольких строк с помощью массива php в mysql
  3. Вставка нескольких строк в таблицу с использованием PHP
  4. Как вставить несколько строк таблицы в базу данных, используя 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 таблицу? Любые советы?

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете использовать функцию $lastuserid = mysqli_insert_id($conn);, чтобы сохранить идентификатор создаваемого пользователя в переменной, а затем использовать его для обновления другой таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...