[英]PHP PDO resulting in no data from mysql
嗨,我目前正在将php 5.3与mysql服务器5.1.61结合使用。 我目前正在尝试执行登录脚本,但是遇到了无法获取结果数据和错误消息的问题。 处理登录的功能如下:
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函数)。 特纳克斯
我认为您不能将参数绑定为函数的参数。
像这样更改代码:
$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);
请记住,根据数据库的字符集,用户名比较可能区分大小写!
我认为您传递了错误的参数,正在传递位置为0的数组。只需要传递一个与值相关的数组。 例如
array('username' => 'mjuarez')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.