以下是我的模型中的代码,我使用Codeigniter,我确定它有一个简单的问题,但我已经尝试了很长时间,任何想法?
<?php
class Users_model extends CI_Model {
public function __construct() {
parent::__construct();
$this->load->database();
}
public function checkLogin($username, $pass) {
$sql = "SELECT COUNT(*) FROM Users WHERE username=? AND password=?;";
$query = $this->db->query($sql, $username, sha1($pass));
if ($query -> num_rows() == 1) {
return True;
} else {
return False;
}
}
}
?>
错误:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在附近使用&#39;?和密码=?&#39;在第1行
答案 0 :(得分:2)
如果$this->db
是PDO object,则its query
method不允许您使用参数绑定。
您必须使用prepared statement。您的代码将如下所示:
$sql = "SELECT COUNT(*) as count FROM Users WHERE username=:user AND password=:pass";
$sth = $this->db->prepare($sql);
$sth->execute(array(':user' => $username, ':pass' => sha1($pass)));
$count = $sth->fetch(PDO::FETCH_COLUMN, 'count');
答案 1 :(得分:1)
今天我发现下面的工作,SQL语句的参数只需要在一个数组中。
$query = $this->db->query($sql, array($username, sha1($pass)));