我有mysql表fg_stock
。大多數情況下,此表中正在進行併發訪問。我用這個代碼,但它不工作:MYSQL表與PHP鎖定
<?php
mysql_query("LOCK TABLES fg_stock READ");
$select=mysql_query("SELECT stock FROM fg_stock WHERE Item='$item'");
while($res=mysql_fetch_array($select))
{
$stock=$res['stock'];
$close_stock=$stock+$qty_in;
$update=mysql_query("UPDATE fg_stock SET stock='$close_stock' WHERE Item='$item' LIMIT 1");
}
mysql_query("UNLOCK TABLES");
?>
這樣行嗎?
'$ qty_in'從哪裏來?你的SQL對我來說沒有意義,看起來這樣做可以更容易。 – CodeZombie 2012-02-08 08:24:32
如果您的SELECT返回多條記錄(您正在使用循環),則即使您放置了LIMIT,UPDATE也可能無法在迭代的相同記錄上工作。如果你的SELECT只返回一條記錄,你不需要循環,但循環不會傷害你的數據。 – thevikas 2012-02-08 09:22:34