cakephid findbyid工作不正确

时间:2014-05-07 05:46:19

标签: php cakephp cakephp-2.4.7

我正在开发一个webservice(cakephp 2.4.7),我在用户模型上使用findById方法。

我拥有的是:

    $user = $this->User->findById($userid);
    if (!$user) {
        throw new NotFoundException(__('Invalid User'));
    }

问题是,如果$userid == 2我得到ID为2的用户那么好。但是如果(例如)$userid == 2as我也会获得身份2的用户。

我认为问题是,$userid是一个字符串,2as变为2

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这就是数据库的工作方式

你很可能正在使用MySQL,而你所描述的只是它的工作方式:

mysql> select * from posts where id = 1;
+----+-----------+------------------------+---------------------+----------+
| id | title     | body                   | created             | modified |
+----+-----------+------------------------+---------------------+----------+
|  1 | The title | This is the post body. | 2013-08-01 07:34:57 | NULL     |
+----+-----------+------------------------+---------------------+----------+
1 row in set (0.00 sec)

mysql> select * from posts where id = "1and this text";
+----+-----------+------------------------+---------------------+----------+
| id | title     | body                   | created             | modified |
+----+-----------+------------------------+---------------------+----------+
|  1 | The title | This is the post body. | 2013-08-01 07:34:57 | NULL     |
+----+-----------+------------------------+---------------------+----------+
1 row in set, 1 warning (0.00 sec)

使用这样的输入,数据库将在执行查询之前将值转换为整数。

如果您想阻止您的应用程序将这两个用户输入视为相同 - 您需要验证用户输入并确保它在使用前是数字。