Intereting Posts

php mysql_insert_id (); не работает

Привет, ребята, я надеялся на помощь здесь, пожалуйста.

У меня есть запрос 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 . Дополнительную информацию см. В документации .