在mysql db中处理INSERT查询后,php函数mysql_insert_id()是否可以返回结果?
只是澄清一下。 cron在生产网站上执行了一个脚本。它包含一个为用户生成发票的周期。每次迭代都包含一个INSERT数据库查询和在查询后立即执行的mysql_insert_id()操作 - 以获取生成的发票号。在不获取最后插入的数字的情况下执行了一组迭代。
它可能是由高数据库服务器负载引起的,还是由于与PHP代码站点上的问题没有关联的其他原因引起的?
任何帮助将不胜感激!
答案 0 :(得分:3)
随便,我可以想到一些MySQL不会返回ID的情况:
AUTO_INCREMENT
ed主键。mysql_insert_id()
查询不同的连接中调用INSERT
。INSERT
查询未成功(例如,遇到死锁)。确保您检查mysql_query()
的返回值,然后使用mysql_errno()
和mysql_error()
。MySQL文档有a full list of conditions and details on how this function works。
当然,MySQL中也可能存在错误,这取决于您使用的是哪个版本的MySQL。
答案 1 :(得分:0)
如果您通过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命令所需的额外参数来删除格式和标题行 - 我担心我无法忘记它们!#/ p>