您好我正在使用php 5.3与mysql服务器5.1.61结合使用。 我正在尝试做一个loginscript,但我遇到了问题 我没有得到结果数据,也没有错误信息。 处理登录的功能如下:
public function doLogin($username,$pw)
{
$db=new incdb();
$row['name']=':username';
$row['value']=$username;
$row['type']=PDO::PARAM_STR;
$parameters[]=$row;
$row['name'] = ':password';
$row['value'] = $pw;
$row['type'] = PDO::PARAM_STR;
$parameters[] = $row;
$query=$db->execSql('SELECT * FROM tbUser WHERE '
.'username=:username AND password=MD5(:password)',$parameters);
unset($parameters);
unset($db);
$data=$query->fetch();
if (isset($data) && is_array($data))
{
$_SESSION['loggedIn']=$data['id'];
$_SESSION['loggedInData']=$data;
return 1;
}
else
{
echo 'error';
return 0;
}
}
incdb类具有execSql函数,如下所示:
public function execSql($sql, $parameters)
{
$query=$this->pdo->prepare($sql);
foreach ($parameters as $param)
{
$query->bindParam($param['name'], $param['value'], $param['type']);
}
$query->execute();
return $query;
}
有人能告诉我这里我做错了什么吗? (我对使用php PDO相对较新....过去我总是直接使用mysql函数)。 TNX
答案 0 :(得分:0)
我认为你不能将参数绑定为函数的参数。
更改您的代码:
$row['name'] = ':password';
$row['value'] = MD5($pw);
$row['type'] = PDO::PARAM_STR;
你的喜欢这样:
$query=$db->execSql(
'SELECT * FROM tbUser WHERE '
.'username=:username AND password=:password', $parameters);
请记住,根据数据库的字符集,用户名比较可能区分大小写!
答案 1 :(得分:0)
我认为你传递了错误的参数,你传递的数组在位置0中有一个数组。你只需要传递一个带有值的关联数组。 E.g。
array('username' => 'mjuarez')