先到先得的PHP

时间:2011-10-10 13:35:59

标签: php mysql

我是php的新手,正在使用web服务从iphone端增加itemQuantity。当用户点击+按钮多次增加一个项目的数量时,它有时不能准确地增加数量。 iphone每次都向我发送增加的数量。我的意思是26岁,27岁,28岁。

但是当我尝试调试它时,我发现有一段时间它首先用28提供数据库,然后将其更新为27。任何人都可以帮忙吗?我正在使用的功能如下....

function update_query($tblName,$queryArr,$condition)
{
if(!empty($this->_database)){
if(!mysql_select_db($this->_database, $this->_link) ) 
{
 $this->_errorstr = "Couldn't change database: ".$this->_database."
 My-SQL     Error ".mysql_error($this->_link);
 }
 }
 $fields=@array_keys($queryArr);
 $values=@array_values($queryArr);
 $update="";
 for($i=0;$i<count($values);$i++)
 {
$update.="$fields[$i]='".addslashes($values[$i])."',";
 }
 $update=substr($update,0,-1);
  $query="update $tblName set $update $condition";
//  echo $query


   //echo  $query."<br>";
 //die;
  $this->_errorstr = "";
  $this->_query = $query;
  $this->_result = mysql_query( $this->_query, $this->_link );
  if ( ! $this->_result )
  {
    $this->_errorstr = "Error : ".mysql_error( $this->_link );
    $this->_success = false;
  }
 else
 {
   $this->_success = true;

}
return $this->_success;
 }

1 个答案:

答案 0 :(得分:2)

如果两个请求同时到达您的应用程序并且从db读取相同的值,会发生什么?

改为在mysql查询中使用SET quantity = quantity + 1

这不能解决您的iphone应用程序中的显示问题,但至少用户命令已存储在数据中。

要解决显示问题,您需要更改应用程序的设计。例如,在客户端增加并稍后存储。