PHP Insert MySQL Array, где одно поле — это поле базы данных AIl, созданное в первом операторе SQL

На моей странице мы определяем новое блюдо, по названию, размеру порции, стоимости и т. Д. Ниже у нас есть таблица, в которой вы выбираете из ранее определенного списка ингредиентов (еще одна таблица MySQL), который будет назначен к блюду, а также назначен количество требуется.

В первой части DishID генерируется автоматически (автоинкремент) при отправке с использованием триггера на стороне сервера. Это вставляет часть блюд успешно.

Вторая часть, где он падает. Я хочу опубликовать новый DishID, IngID а также Volume к моей таблице базы данных, что он делает, но он оставляет мой DishID пустым. В настоящее время я использую оператор Select MAX, чтобы он вводил последнюю запись, это может быть не идеально, но я не думаю, что это причина того, что он не работает, так как даже запись указанного оператора в определенный идентификатор возвращает пустое значение — поэтому должно быть что-то, как написан мой код.

require_once('db_connect.php');

$DishName = mysqli_real_escape_string($con, $_POST['DishName']);
$DishCatID = mysqli_real_escape_string($con, $_POST['DishCatID']);
$Serving = mysqli_real_escape_string($con, $_POST['Serving']);
$SRP = mysqli_real_escape_string($con, $_POST['SRP']);
$Method = mysqli_real_escape_string($con, $_POST['Method']);
$SourceID = mysqli_real_escape_string($con, $_POST['SourceID']);

$sql="INSERT INTO Dishes (DishName, DishCatID, Serving, SRP, Method, SourceID)
VALUES ('$DishName', '$DishCatID', '$Serving', '$SRP', '$Method', '$SourceID')";
mysqli_query($con, $sql) or die(mysqli_error($con));

$DishID = 'SELECT MAX(DishID) FROM Dishes';
$result=mysqli_query($con, $DishID) or die ("Query to get DishID failed: ".mysqli_error($con));

$array = array('$DishID'=>(mysql_query($GetDishID)),'$IngID'=>($_POST['IngID[]']),'$Volume'=>($_POST['Volume[]']) );

$values = array();
foreach ($_POST['IngID'] as $i => $ingID) {
if (!empty($ingID)) {
$ingID = mysqli_real_escape_string($con, $ingID);
$volume = mysqli_real_escape_string($con, $_POST['Volume'][$i]);
$values[] = "('$DishID', '$ingID', '$volume')";
}
}
if (!empty($values)) {
$sql2 = 'INSERT INTO DishIng (DishID, IngID, Volume) VALUES ' . implode(', ', $values);
mysqli_query($con, $sql2) or die(mysqli_error($con));
}require_once('db_disconnect.php');

Что я здесь не так делаю?

0

Решение

Проверять, выписываться mysqli_insert_id. Он вернет автоматически сгенерированный идентификатор, использованный в последнем запросе.

$DishID = mysqli_insert_id($con);
0

Другие решения

Вам нужно получить идентификатор вставки через mysqli_insert_id() как следующее, что вы сделаете с этим подключением к базе данных после вашего начального оператора вставки. Это должно выглядеть так:

$sql="INSERT INTO Dishes (DishName, DishCatID, Serving, SRP, Method, SourceID)
VALUES ('$DishName', '$DishCatID', '$Serving', '$SRP', '$Method', '$SourceID')";
mysqli_query($con, $sql) or die(mysqli_error($con));
// get inserted row id
$insertID = mysqli_insert_id($con);

Это, конечно, при условии, что ваше поле идентификатора блюда является автоинкрементным полем.

У вас также есть mysql_query() вызов функции ниже в вашем коде, который должен быть изменен на mysqli,

0