mysql_insert_id() всегда возвращает 0

У меня есть этот код, который мне нужно заполнить через форму новой строки в двух таблицах с ограничением внешнего ключа. Эта ссылка относится только к первой вставке, и мне нужно определить сгенерированный last_id, чтобы использовать его для связанной таблицы. Но $ last_id возвращает всегда ноль, несмотря на новую запись create.

   //Connect to Database 
 $con=mysqli_connect($db_host,$db_username,$db_pass,$db_name); 
 if (mysqli_connect_errno())
   {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }
// Database connesso

// Devo inserire il record in Documents prima perché é quello che genera la Primary Key

 $sql=" INSERT INTO Documents (doc_name, doc_type, doc_manager, doc_pointer) VALUES ('$upload_name','Privacy','Agente di riferimento','$pic')";
 $last_id = mysql_insert_id();
 Echo "Last Protocol Number =".$last_id."<br>";

Абсолютно похожий код прекрасно работает в другом скрипте, поэтому не должно быть проблемой версии php:

// Записывает информацию в базу данных mysql_query ("INSERT INTO documents (doc_name, doc_type, doc_manager, doc_pointer) VALUES ('$ name', '$ type', '$ manager', '$ pic') "); $ id = mysql_insert_id (); Echo" Номер последнего протокола =".$ Я бы."
";

Не в состоянии понять, где проблема.

1 ответ

Решение

Вы забыли выполнить запрос и смешали mysql_ а также mysqli_ API-интерфейсы

$sql=" INSERT INTO Documents (doc_name, doc_type, doc_manager, doc_pointer) VALUES ('$upload_name','Privacy','Agente di riferimento','$pic')";
mysqli_query($con, $sql);
$last_id = mysqli_insert_id($con);

К вашему сведению, в этом примере нет обработки ошибок. Вы должны добавить это.

Другие вопросы по тегам