我是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;
}
答案 0 :(得分:2)
如果两个请求同时到达您的应用程序并且从db读取相同的值,会发生什么?
改为在mysql查询中使用SET quantity = quantity + 1
。
这不能解决您的iphone应用程序中的显示问题,但至少用户命令已存储在数据中。
要解决显示问题,您需要更改应用程序的设计。例如,在客户端增加并稍后存储。