【问题标题】:Upgrading to CI 3.0.1升级到 CI 3.0.1
【发布时间】:2015-10-04 15:36:40
【问题描述】:

我正忙着将我的 CodeIgniter 从 2.1.4 升级到 3.0.1,并按照此处的说明进行操作:http://www.codeigniter.com/userguide3/installation/upgrade_300.html

自从我开始,我得到这个错误:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? AND `password` = ?' at line 3

这是完整的查询:

    $sql = "
        SELECT *
        FROM `icms4_user`
        WHERE `username` = ?
        AND `password` = ?
    ";

现在升级似乎导致数据库类拒绝将问号占位符替换为其适当的值。

查询代码如下:

$q = $this->db->query($sql, array($user, $pass));

有人知道是什么原因造成的吗?

【问题讨论】:

  • 你能告诉我们你用来查询的代码吗?
  • $q = $this->db->query($sql, array($user, $pass)); - 也会更新问题。谢谢。
  • 试试array('{$user}', '{$pass}')array(\'{$user}\', \'{$pass}\')
  • 试过Tpojka,没有解决问题。有很多这样的查询,在我升级之前它们都有效。变量设置正确。目前正在研究通过 Git 恢复升级并重新启动它。我对发生的事情一无所知。
  • 我只是下载了一个干净的 CI301 并制作了与您显示的相同的代码,完全没有问题。如果表名错误,它会显示带有 ?替换为值。我没有把$sql拆分成多行,会不会有一些奇怪的字符?

标签: php database codeigniter


【解决方案1】:

例如,我刚刚创建了一个测试用户控制器和一个用于数据库信息的测试函数,并注意到我得到了" . '?' . ",目前我只是输入电子邮件而不是密码,仅作为示例

Var 转储显示工作

array(4) { ["user_id"]=> string(1) "2" ["user_group_id"]=> string(2) "10" ["username"]=> string(4) "demo" ["email"]=> string(13) "demo@demo.com" } 2

控制器示例

<?php

class Users extends CI_Controller {

public function index() {
    // Example Only

    // hard code in just for testing
    $username = 'demo';
    $email = 'demo@demo.com';

    $user_info = $this->test($username, $email);

    var_dump($user_info);

    // Echo Test Data
    echo $user_info['user_id'];
    echo '</br>';
    echo $user_info['user_group_id'];
    echo '</br>';
    echo $user_info['username'];
}

public function test($username, $email) {
    $sql = "SELECT * FROM " . $this->db->dbprefix . "user 
        WHERE username = " . '?' . "
        AND email = " . '?' . "
    ";

    $query = $this->db->query($sql, array($username, $email));

    return $query->row_array();
}
}

【讨论】:

  • 这并没有为我解决。谢谢你的评论。我继续修修补补,在我对 config.php 文件进行更改后它开始工作。
【解决方案2】:

在我的 config.php 文件中进行一些更改后,问题就消失了。我(愚蠢的我)在我的 config.php 文件中使用了 db_prefix 而不是我的 database.php 文件,并且配置错误。

【讨论】:

    猜你喜欢
    • 2019-09-02
    • 2012-10-12
    • 1970-01-01
    • 2021-12-20
    • 2013-07-03
    • 1970-01-01
    • 2018-10-24
    • 2021-10-13
    • 2012-02-20
    相关资源
    最近更新 更多