Codeigniter 查询未正确形成
Codeigniter query not forming properly
我在 codeigniter 中编写了一个带有 sha2 哈希函数的查询,但生成的查询没有正确形成。
这是我在模型中的代码:
public function validate_user($data = NULL)
{
$email = $data["email"];
$password = $data["password"];
$this->db->select('user_id');
$query = $this->db->get_where('users', array('sha2(username, NULL)' => $data["username"], 'password' => $password));
return $query->row_array();
}
这是我收到的错误(由于格式错误的查询):
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 ''FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395' AND `password' at line 3
SELECT `user_id` FROM `users` WHERE sha2(username, NULL) 'FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395' AND `password` = '2668dcd9bac3c8bb60742f139876d1d6'
为什么 =
符号没有出现在 sha2(username, NULL)
和 'FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395'
之间
实际查询应该是:
SELECT `user_id` FROM `users` WHERE sha2(username, NULL) = 'FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395' AND `password` = '2668dcd9bac3c8bb60742f139876d1d6'
而不是:
SELECT `user_id` FROM `users` WHERE sha2(username, NULL) 'FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395' AND `password` = '2668dcd9bac3c8bb60742f139876d1d6'
知道我做错了什么吗?
这实际上是一个简单的查询,使用 Codeigniter 方法构建语句在这种情况下无济于事。
尝试使用像这样的更简单的绑定查询。
$sql = "SELECT user_id FROM users WHERE sha2(username, 256) = ? AND `password` = ?";
$query = $this->db->query($sql, array($data["username"], $data["password"]));
return $query->row_array();
请注意,我将第二个参数放入 mysql sha2()
调用中。我认为这两个参数都是必需的,如果其中一个丢失或为空,则 sha2()
returns 为空。
我在 codeigniter 中编写了一个带有 sha2 哈希函数的查询,但生成的查询没有正确形成。
这是我在模型中的代码:
public function validate_user($data = NULL)
{
$email = $data["email"];
$password = $data["password"];
$this->db->select('user_id');
$query = $this->db->get_where('users', array('sha2(username, NULL)' => $data["username"], 'password' => $password));
return $query->row_array();
}
这是我收到的错误(由于格式错误的查询):
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 ''FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395' AND `password' at line 3
SELECT `user_id` FROM `users` WHERE sha2(username, NULL) 'FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395' AND `password` = '2668dcd9bac3c8bb60742f139876d1d6'
为什么 =
符号没有出现在 sha2(username, NULL)
和 'FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395'
实际查询应该是:
SELECT `user_id` FROM `users` WHERE sha2(username, NULL) = 'FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395' AND `password` = '2668dcd9bac3c8bb60742f139876d1d6'
而不是:
SELECT `user_id` FROM `users` WHERE sha2(username, NULL) 'FCD8FE02F495400DC020499AC31FC75ABA05005622FD7A2F01D37153724CB395' AND `password` = '2668dcd9bac3c8bb60742f139876d1d6'
知道我做错了什么吗?
这实际上是一个简单的查询,使用 Codeigniter 方法构建语句在这种情况下无济于事。
尝试使用像这样的更简单的绑定查询。
$sql = "SELECT user_id FROM users WHERE sha2(username, 256) = ? AND `password` = ?";
$query = $this->db->query($sql, array($data["username"], $data["password"]));
return $query->row_array();
请注意,我将第二个参数放入 mysql sha2()
调用中。我认为这两个参数都是必需的,如果其中一个丢失或为空,则 sha2()
returns 为空。