cakePHP 准备好的语句不工作(获取所有不工作)

Posted

技术标签:

【中文标题】cakePHP 准备好的语句不工作(获取所有不工作)【英文标题】:cakePHP prepared statement not working (fetch all not working) 【发布时间】:2016-06-27 23:18:28 【问题描述】:

我正在使用 cakephp,但不知道如何准备 sql 语句。我已经尝试了很多东西,但似乎没有任何效果。我正在使用 sql server 2014。

在食谱中,我找到了准备好的语句的确切代码:

    $db = $this->getDataSource();
    $db->fetchAll(
        'SELECT * from users where username = :username AND password = :password',
        array('username' => 'jhon','password' => '12345')
    );

但是,当我尝试使用此代码时(只是为了看看我是否可以使用它),这是我的结果:

警告 (512):SQL 错误:第 1 行:':' 附近的语法不正确。 [APP/Model/Datasource/Mssql.php,第 749 行]

和我的调试:

查询:SELECT * from users where username = :username AND password = :password

有谁知道为什么这不起作用?任何帮助都会很棒,谢谢!

【问题讨论】:

【参考方案1】:

试试这个:

$db = $this->getDataSource();
$username = 'jhon';
$password = '12345';
$db->fetchAll("SELECT * from users where username = $username AND password = $password");

【讨论】:

这不是问题的解决方案。所有这一切都是将变量的值叠加到字符串中。 sql注入时机成熟了。

以上是关于cakePHP 准备好的语句不工作(获取所有不工作)的主要内容,如果未能解决你的问题,请参考以下文章

MySQLi准备好的语句不绑定整数

准备好的语句不获取数据

cakePHP saveMany 不工作

PDO - 使用准备好的语句将所有 sql 数据放入 html 表中

准备好的 SQL LIKE 语句不返回所有结果

准备好的语句在本地主机上工作,但不能在实时服务器上工作,无法获得输出 [重复]