【问题标题】:Update MySQL database with PHP and returning value使用 PHP 更新 MySQL 数据库并返回值
【发布时间】: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;否则{返回假; }

标签: php mysql laravel


【解决方案1】:

如果你使用 Laravel 4,为什么不使用 fluenteloquent ORM (除了 mysql_* 已经被弃用了一段时间..)

如果你想创建一个 REST API,为什么不使用 laravel 4 的 RESTFUL Controllers 来代替..

你的生活会轻松很多..

【讨论】:

    猜你喜欢
    • 2014-01-04
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多