У меня есть форма, в которой сотрудники могут вводить детали, которые они заказали, которые затем будут отображаться в списке для просмотра всеми сотрудниками. Это моя форма:Извлечь идентификатор для MySQL INSERT из списка распада раскрывающегося списка
<form method="post" action="../libraries/addpart.php">
<div class="form-group col-lg-4 col-lg-offset-4">
<label for="job_id">Job #</label>
<input type="text" class="form-control" name="job_id" placeholder="Job #">
</div>
<div class="form-group col-lg-4 col-lg-offset-4">
<label for="part_needed">Part Needed</label>
<input type="text" class="form-control" name="part_needed" placeholder="Part Needed">
</div>
<div class="form-group col-lg-4 col-lg-offset-4">
<label for="date_ordered">Date Ordered</label>
<input type="date" class="form-control" name="date_ordered">
</div>
<div class="form-group col-lg-4 col-lg-offset-4">
<label for="vendor_id">Ordered From</label>
<select class="form-control" name="vendor_id">
<option></option>
<?php
while ($row = mysqli_fetch_array($vendors)) {
// Print out the contents of the entry
echo '<option>' . $row['vendor_name'] . '</option>';
}
?>
</select>
</div>
<div class="form-group col-lg-4 col-lg-offset-4">
<label for="part_needed">ETA</label>
<input type="date" class="form-control" name="part_eta">
</div>
<button type="submit" class="btn btn-primary col-lg-2 col-lg-offset-5" name="addbutton">Submit</button>
</form>
форма используется выпадающий список, который отображает имена поставщиков, а не их ID, запрашивая из vendors
таблицы. Когда форма отправлена, мне нужна запись, которая будет вставлена в таблицу ordered_parts
с идентификатором поставщика, а не именем. Это моя (довольно грязная) попытка что:
/*
* Get Vendor ID
*/
$vendorname = $_POST['vendor_id'];
$query = "SELECT * FROM `vendors`
WHERE vendor_name = $vendorname";
//Get results
$vendorid = $mysqli->query($query) or die($mysqli->error . __LINE__);
$job = $_POST['job_id'];
$part = $_POST['part_needed'];
$date = $_POST['date_ordered'];
$vendor = $vendorid['vendor_id'];
$eta = $_POST['part_eta'];
$partorder = "INSERT INTO `ordered_parts`
(job_id, part_needed, date_ordered, vendor_id, part_eta)
VALUES
('$job', '$part', '$date', '$vendor', '$eta')";
$result = mysqli_query($mysqli, $partorder);
if ($result) {
header('Location: ../views/ordered-parts.php');
} else {
echo("<br>Failed to add");
}
}
Ошибки я получаю:
«У Вас есть ошибка в вашем синтаксисе SQL, проверьте руководство, которое соответствует вашему серверу MySQL версия для правильного синтаксиса «
Как вы, вероятно, можете сказать, у меня не было реального опыта работы с базами данных перед этим проектом. Любые идеи о том, как я могу это сделать?
Попробуйте указать ваше имя переменной кавычками. Я говорю о _ $ vendorname_ в вашем первом запросе. –
Не связанный с вашим вопросом, но вы не должны доверять пользователю и избегать значения _ $ vendorname_, прежде чем использовать его в своем запросе. Для получения дополнительной информации найдите __SQL injection__ –
Отличный совет, спасибо, ребята! –