Привет, ребята, я надеялся на помощь здесь, пожалуйста.
У меня есть запрос INSERT к таблице, после этого я звоню:
mysql_insert_id();
Чтобы отправить последний идентификатор, вставленный в таблицу, на следующую страницу следующим образом:
$insertGoTo = "confirm_booking.php?booking_ID=" .$_POST['booking_ID']. "";
К сожалению, это не работает, все, что я получаю, это ноль.
В таблице, в которую я вставляю, есть номер автоматического увеличения, и в него вставляются значения.
Я также попробовал SELECT MAX(id) FROM mytable
. Это не работает.
Я знаю, что об этой проблеме уже говорили. Я прочитал все сообщения, но ничего не пригодилось.
Большое спасибо Франческо
Вы должны использовать значение, возвращаемое MySql_Insert_Id (), когда вы создаете свою ссылку:
// your query $newId = MySql_Insert_Id (); $insertGoTo = "confirm_booking.php?booking_ID=" . $newId;
Возможно, что в вашей таблице нет поля AUTO_INCREMENT
!
Это также может случиться, потому что одновременно у вас есть два или более соединения mysql. В этом случае вы должны использовать link identifier
.
$link = mysql_connect( ... ); mysql_select_db('mydb', $link); mysql_query('INSERT mytable SET abc="123"', $link); $inserted_id = mysql_insert_id($link);
Некоторые ключевые моменты руководства PHP:
Идентификатор, сгенерированный для столбца AUTO_INCREMENT предыдущим запросом об успехе, 0, если предыдущий запрос не генерирует значение AUTO_INCREMENT, или FALSE, если соединение MySQL не установлено.
Если не имеет поля AUTO_INCREMENT, это не ваша проблема, вы можете попытаться сохранить результат вызова mysql_query и использовать это как аргумент функции id
$result = mysql_query("..."); $id = mysql_insert_id($result);
Возникла проблема с использованием такого запроса:
INSERT INTO членов (имя пользователя, пароль, электронная почта) VALUES (…)
Изменение его на:
INSERT INTO (идентификатор, имя пользователя, пароль, адрес электронной почты) VALUES ('', …)
используя пустое значение '', MySQL будет использовать значение Auto Increment, но также позволит вам использовать его в вашем запросе, чтобы вы могли вернуть id вставки
mysql_insert_id может возвращать 0 или false, если ваша вставка не работает правильно? Поэтому, если у вас возникли проблемы с mysql_insert_id, не перенастраивая то, что вы ожидаете, подтвердите, что у вас нет уникального ограничения или какой-либо другой проблемы с вашим sql, что приведет к сбою вставки. Использование max – ужасная идея, если вы считаете это.
Обязательно поместите mysql_insert_id()
после
mysql_query($sql, $con); //Execute the query
Выше запроса отвечает за выполнение команды Insert INTO ...
После того, как вы введете последний идентификатор
Я также страдаю от этой проблемы. Наконец, я обнаружил, что проблема возникает в моем соединении с базой данных . Вы можете использовать этот следующий код подключения для подключения базы данных, тогда вы можете легко использовать mysqli_insert_id ().
$db_connect = mysqli_connect("localhost", "root", "", "social");
Затем вы можете использовать mysqli_insert_id () как
$id = mysqli_insert_id($db_conx);
Я надеюсь, что это поможет вам. У вас возникли проблемы, тогда оставьте свой комментарий.
Функция mysqli_insert_id
устарела . Это может быть вашей проблемой.
Вместо этого попробуйте $mysqli->insert_id
. Дополнительную информацию см. В документации .