【发布时间】:2017-11-21 13:47:17
【问题描述】:
我遇到了一个致命错误,我试图在 stackoverflow 和其他论坛中找到解决方案,但似乎找不到。
错误看起来像:
致命错误:在字符串中调用成员函数 query() /home/......./check.php 在第 19 行
class M_login extends CI_Model{
public function num_of_students($name,$adress){
$sql="select * from tbl_admin where name='$name' and address='$address'";
$query=$this->db->query($sql);
return $query->num_rows();
}
【问题讨论】:
-
$this->db的内容是什么? -
Little Bobby 说 you may be at risk for SQL Injection Attacks。通过parameterized queries 了解Prepared Statements。我推荐
PDO,我推荐wrote a class for,使其比使用非参数化查询更加简单、干净和安全。此外,This article 可以帮助您在MySQLi和PDO之间进行选择 -
永远不要存储纯文本密码!请使用 PHP 的 built-in functions(
password_hash()和password_verify())来处理密码安全问题。如果您使用低于 5.5 的 PHP 版本,您可以使用password_hash()compatibility pack。 没有必要 escape passwords 或在散列之前对其使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。 -
@GrumpyCrouton 也许他在调用函数之前散列密码......
-
伙计们,感谢您的评论。但是密码字段是虚拟字段。我知道在密码的情况下我应该怎么做。我的问题与安全无关。
标签: php mysql database codeigniter activerecord