2011-10-10 70 views
1

我是一名php新手,并在web服务上工作,从iphone端增加itemQuantity。当用户点击+按钮多次增加一个项目的数量时,它有时会不准确地增加数量。 iPhone每次都会向我发送增加的数量。我的意思是26然后27然后28.先来先服务php

但是,当我试图调试它,我发现有一段时间它首先服务数据库与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); 
} 
} 
[email protected]_keys($queryArr); 
[email protected]_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; 
} 
+5

删除那些'@'符号,您可能会看到错误... – Neal

+0

您的请求是否以正确的顺序从iPhone到达? – Marcus

+0

您是否每次用户点击手机上的增加数量按钮时都会发送一个请求? – jprofitt

回答

2

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

用你的mysql查询代替SET quantity = quantity + 1

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

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

+0

非常感谢。回答您的问题“如果两个请求到达......,会发生什么?”它在数据库中存储27个而不是28个。它首先在数据库中保存28个数据,然后用27个数据库进行更新.... – vikas