繁体   English   中英

PHP PDO导致没有来自mysql的数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM