mysql_insert_id()总是返回0

时间:2014-02-12 15:20:16

标签: php mysql mysql-insert-id

我有这个代码,我需要通过外键约束在两个表中填充一个新行。这个doe仅引用第一个插入,我需要识别生成的last_id以将其用于相关表。但$ last_id返回始终为零而不是新记录是创建。

   //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“Last Protocol Number =”。$ id。“
”;

无法理解问题所在。

1 个答案:

答案 0 :(得分:4)

您忘记运行查询您混合了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);

仅供参考,此示例没有错误处理。你应该添加它。