繁体   English   中英

php:mysql_insert_id()问题

[英]php: mysql_insert_id() issues

在mysql db中处理INSERT查询后,php函数mysql_insert_id()是否可以返回结果?

只是为了澄清。 cron在生产网站上执行了一个脚本。 它包含一个为用户生成发票的周期。 每次迭代都包含一个INSERT数据库查询和在查询后立即执行的mysql_insert_id()操作 - 以获取生成的发票号。 执行一组迭代而不获取最后插入的数字。

它可能是由高数据库服务器负载引起的,还是由于与PHP代码站点上的问题没有关联的其他原因引起的?

任何帮助,将不胜感激!

另外,我可以想到一些MySQL不会返回ID的情况:

  • 您要插入的表没有AUTO_INCREMENT ed主键。
  • 您正在一次插入多行。
  • 您从与执行INSERT查询不同的连接调用mysql_insert_id()
  • INSERT查询未成功(例如,它遇到死锁)。 确保从mysql_query()检查返回值,然后使用mysql_errno()mysql_error()

MySQL文档有完整的条件列表和有关此函数如何工作的详细信息

当然,MySQL中也可能存在一个错误,这取决于您使用的是哪个版本的MySQL。

如果您通过shell脚本运行命令,并单独运行它们,如同;


mysql -e "insert into table ( field1 ) values ( 'val1' );" "database"

lastId=`mysql -e "select last_insert_id();" "database"`

然后,当第二个调用与服务器建立新连接时,这将不起作用。 您需要执行以下操作,因为它们都是在单个数据库调用/连接中完成的;


lastId=`mysql -e "
                  insert into table ( field1 ) values ( 'val1' );
                  select last_insert_id();
                 " "database"`

你需要查找MySQL命令所需的额外参数来删除格式和标题行 - 我担心我无法忘记它们!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM