[英]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.