MySQL SQL_INSERT_ID () и LAST_INSERT_ID не работают

Я использую MySQL / PHP / Apache на недавнем MacBook Pro со всеми запросами к localhost. Я искал, но не смог найти решение своей проблемы.

Мой PHP-скрипт успешно вставляет запись в основную основную таблицу, первичный ключ которой называется ID и является полем автоинкремента, но ему не удается записать значение этого идентификатора для использования с другой INSERT в другую таблицу, когда я пытаюсь использовать LAST_INSERT_ID () или SQL_INSERT_ID (). Данные, необходимые для второй таблицы, требуют только этого значения и содержимого текстового поля из той же HTML-формы.

Безусловно, если я ставлю целое число после знака равенства (в качестве теста), мой сценарий работает безупречно (то есть без ошибок, и сценарий вводит необходимые данные во вторую таблицу отлично). Я пробовал SQL_INSERT_ID () и LAST_INSERT_ID () с одинаковыми результатами: полностью белый экран.

Здесь нет ограничений внешнего ключа или чего-либо сложного. Этот код не работает и возвращает только белый экран:

$sql = "INSERT INTO Table1
(int1, str1, int2, int3, int4, int5)
VALUES (?, ?, ?, ?, ?, ?)";

if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "isiiii",
$param_int1, $param_str1, $param_int2,
$param_int3, $param_int4, $param_int5);
}

if(mysqli_stmt_execute($stmt)){
$last_id = sql_insert_id();        // <--- problem statement
} else {
echo "Something went wrong with the execution.";
}

Но код работает точно так, как я хочу, когда я использую целое число вместо рассматриваемой функции:

if(mysqli_stmt_execute($stmt)){
$last_id = 6;
} else {
echo "Something went wrong with the execution.";
}

If (mysql_stmt_execute ($ stmt)) возвращает true, если первая вставка прошла успешно, поэтому кажется логичным инициализировать переменную $ last_id сразу после этого. Это нормально? Где еще я могу посмотреть в моем коде? Нужно ли указывать данные в скобках функции?

Версия MySQL 5.7.21
Mac OS X версия 10.13.4

Я считаю себя начинающим новичком в PHP / MySQL. Любая помощь будет принята с благодарностью.

0

Решение

Пытаться

mysqli_insert_id($link);

Я думаю, что вы путаете ООП и процедурные части библиотеки или что-то в этом роде.

Потому что, если я правильно помню sql_insert_id от ныне несуществующей mysql_* библиотека.

https://www.w3schools.com/php/func_mysqli_insert_id.asp

0

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

Других решений пока нет …

По вопросам рекламы [email protected]