在执行PHP侧锁时,如何选择锁名称

在执行PHP侧锁时,如何选择锁名称,php,mysql,multithreading,locking,Php,Mysql,Multithreading,Locking,所以我有这个代码: mysql_query("INSERT INTO table (id, field1, field2) VALUES ($id_insert, $field1, $field2)"); $id = mysql_result(mysql_query('SELECT LAST_INSERT_ID()')); mysql_query("UPDATE table SET field3 = $id WHERE id = $id"); 我的问题是…运行此代码时是否存在mysql死锁的风

所以我有这个代码:

mysql_query("INSERT INTO table (id, field1, field2) VALUES ($id_insert, $field1, $field2)");
$id = mysql_result(mysql_query('SELECT LAST_INSERT_ID()'));
mysql_query("UPDATE table SET field3 = $id WHERE id = $id");
我的问题是…运行此代码时是否存在mysql死锁的风险,如果存在,为什么会出现这种情况


现在我可以做一个PHP端锁定,但我需要一个唯一的标识符来进行锁定。在选择唯一的锁标识符名称时有哪些指导原则?如何选择一个能够正确防止MySQL死锁的锁名?

您可以使用MySQL锁定功能:

mysql_query("LOCK TABLES table WRITE"); // You need to use WRITE lock in your case
然后执行查询:

mysql_query("INSERT INTO table (id, field1, field2) VALUES ($id_insert, $field1, $field2)");
$id = mysql_result(mysql_query('SELECT LAST_INSERT_ID()'));
mysql_query("UPDATE table SET field3 = $id WHERE id = $id");
然后松开锁

mysql_query("UNLOCK TABLES");
注1:
作为完整的参考使用

注2:
不推荐使用
mysql.*
函数,我建议退出