【问题标题】:PHP PDO resulting in no data from mysqlPHP PDO导致没有来自mysql的数据
【发布时间】:2012-10-03 12:58:58
【问题描述】:

您好,我目前正在将 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 函数)。天呐

【问题讨论】:

  • 你试过用bindValue替换bindParam吗?

标签: php mysql


【解决方案1】:

我认为您不能将参数绑定为函数的参数。

像这样更改您的代码:

$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);

请记住,根据数据库的字符集,用户名比较可能区分大小写!

【讨论】:

  • Tnx 将 md5 移动到它起作用的 $row['value'] 后。虽然我刚刚通过那个发现了另一件事......那个mysql版本和php 5.3生成的md5似乎不同(因此不得不手动将php md5值放入数据库中)。将 md5 再次移动到 php 部分 tnx 的总功能
【解决方案2】:

我认为您传递了错误的参数,您传递的是一个位置为 0 的数组。您只需传递一个带有值的关联数组。例如

array('username' => 'mjuarez')

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 2016-07-06
    • 2016-10-12
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多