所以我正在做这个php程序,它有一个Person类。该类内部有一个名为find_by_email($email)的方法。我尝试通过电子邮件查找用户,使用的电子邮件地址肯定在我的数据库中。查询db之后,它应该返回一个person对象。
我已经检查过以确保我的表名和列是正确的。经过测试,代码似乎没有通过第一个if语句:if ($r = mysql_query($query, $dbc))。我唯一能想到的就是我的查询一定是不正确的。这不是正确的语法吗?
下面是我调用该方法的方式:
$email = $_POST['email'];
$person = Person::find_by_email($_POST['email']);下面是我的Person::find_by_email()方法:
public static function find_by_email($email) {
global $dbc;
$query = "SELECT * FROM person WHERE email=". $email;
if ($r = mysql_query($query, $dbc)) {
if($row = mysql_fetch_array($r)) {
$person = new Person($row);
return $person;
}
}else{
$error = "Could not find user";
echo $error;
return nil;
}
}发布于 2013-04-22 05:28:34
假设您已经正确地定义了$dbc ...
首先,您的查询字符串是错误的,您需要用引号将$email括起来
$query = "SELECT * FROM person WHERE email='". $email . "'";其次,您的SQL是可注入的,您需要转义post字符串:
$email = mysql_real_escape_string($_POST['email']); 第三,请不要使用mysql库,因为它们已被弃用,请搜索mysqli并阅读有关它的信息。
https://stackoverflow.com/questions/16136364
复制相似问题