私はmysqlテーブルfg_stock
を持っています。この表では、ほとんどの場合、同時アクセスが行われています。このコードを使用しましたが、動作しません。PHPを使ったMYSQLテーブルのロック
<?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
SELECTが複数のレコードを返す場合(ループを使用している場合)、UPDATEはLIMITを置いても同じ繰り返しレコードでは機能しない可能性があります。あなたのSELECTがレコードを1つしか返さない場合は、ループは必要ありませんが、ループはあなたのデータを傷つけることはありません。 – thevikas