【发布时间】:2013-09-20 22:57:30
【问题描述】:
我正在使用用于 PHP 的 Laravel 4 框架制作一个 REST API,它将更新数据库中的指定值。
我能够获取用户指定的值并更新 MySQL 数据库中的值(这按预期工作)。但是,一旦更新完成,API 应该将 true/false 返回给客户端。我该怎么做呢 ?
public function store()
{
//
$username = $_POST['username'];
$statname = $_POST['statname'];
$statvalue = $_POST['statvalue'];
//check to see if user has actually entered username = xyx, statname = xyz, statvalue = xyz
//check to see if username exists and valid statname - count of rows should be 1
//statvalue should be integer
$con = mysql_connect('localhost:8888', 'root', 'root');
mysql_select_db('DiamondHunt');
$sql = 'UPDATE UserInfo SET ' . $statname . '=' . $statvalue . ' WHERE username=\'' . $username . '\'' ;
$execute_sql = mysql_query($sql);
//return $execute_sql;
}
为了测试后端,我使用 curl 命令(通过 Mac 终端)
curl -F username=ghost -F statname=kills -F statvalue=18 http://localhost:8888/l4/public/api/v1/sendStat
在后端,当我使用 echo $execute_sql; 行时,它会打印值 1(并按预期更新数据库)。但是当我尝试使用return $execute_sql; 时,它失败了。
【问题讨论】:
-
当你使用
return $execute_sql;时它会以什么方式失败?问题可能出在调用者身上,这个函数看起来不错。 -
您的代码很容易受到 SQL 注入的影响。请了解准备好的语句。
-
请注意,
mysql_query()不返回行数。它只是返回一个布尔值,指示执行查询是否出错。 -
嗯,看起来这就是问题的原因。我正在尝试返回一个布尔值,但它似乎不喜欢它。
-
为什么不试试 if ($execute_sql) { return true;否则{返回假; }