У меня есть две таблицы в моей БД, telephones(id, title, price)
и images(id, tp_id, photos)
я пошел в images
стол и поставить внешний ключ на tp_id
колонке, чтобы соответствовать id
в telephones
стол так, что каждое изображение является связанный с telephone
. Но проблема в том, что мои изображения попадают в таблицу отлично, но столбец tp_id
всегда имеет значение 0, чего я здесь не хватает? может ли кто-нибудь меня вести? Спасибовставки изображения в другую таблицу с внешним ключом
PS: Я знаю об уязвимости безопасности моего кода. Я просто делаю некоторые тесты здесь!
<?php
if (isset($_POST['submit'])) {
include 'dbconnect.php';
for ($i = 0; $i < count($_FILES["photo"]["name"]); $i++) {
$target = "img/"; //This is the directory where images will be saved
$target_files = $target . basename($_FILES['photo']['name'][$i]); //This gets all the other information from the form
$ad_title = $_POST['title'];
$ad_price = $_POST['price'];
$ad_photo = $target . ($_FILES['photo']['name'][$i]);
if (!move_uploaded_file($_FILES['photo']['tmp_name'][$i], $target_files)) { //Tells you if its all ok
echo "Sorry, there was a problem uploading your file.";
} else { //Gives and error if its not
$sql = "INSERT INTO telephones (title, price) VALUES ('$ad_title', '$ad_price')";
$conn->query($sql);
$sql1 = "INSERT INTO images (photos) VALUES ('$ad_photo') ";
$conn->query($sql1);
//Writes the photo to the server
header('location: addconfirm.php');
}
}
}
?>
** ПРЕДУПРЕЖДЕНИЕ ** Этот код имеет серьезные [SQL injection bugs] (http://bobby-tables.com/), потому что вы отправляете данные '$ _POST' непосредственно в свой запрос. По возможности используйте ** подготовленные заявления **. Это довольно просто сделать в ['mysqli'] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и [PDO] (http://php.net/manual/ ru/pdo.prepared-statements.php), где любые предоставленные пользователем данные указываются с индикатором '?' или ': name', который позже заполняется с помощью' bind_param' или 'execute' в зависимости от того, какой из них вы используете. – tadman