Mysqli到PDO的转换

时间:2015-05-29 00:32:49

标签: php mysql pdo mysqli

我最近几天前开始使用PDO并且正在更改我的所有mysqli代码,但我似乎遇到了一堵砖墙。现在,当我使用mysqli时,这段代码工作得很漂亮,但现在我似乎无法打印出结果。这段代码基本上取密码的输入值,数据库中散列密码的输入值与它们匹配,如果两者相等则用户将登录。我的问题是我似乎无法找到获取方法我的数据库中的密码。任何帮助将非常感激。谢谢。

<?php 
 session_start();

 $user = "root";
 $pass = "";

$mcon = new PDO('mysql:host=localhost;dbname=rabbit_users', $user, $pass);

 try {
 $mcon = new PDO('mysql:host=localhost;dbname=rabbit_users', $user, $pass);
$mcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();



//prepare statement
$password = $_POST['password']; 

$stmt = $mcon->prepare("SELECT `password` FROM members WHERE password=:password");
$stmt->bindParam(":password", $_POST['password']);
$stmt->execute();

//get_result
$data_array = $stmt->fetchAll();
$stmt->fetch(PDO::FETCH_ASSOC);

//echo passwords
print 'Password from form: ' . $password . '<br />';
print 'Password from DB: ' . $data_array['password'] . '<br />';

//verify password
if (password_verify($password, $data_array['password'])) {
    print 'success';
    exit();
}else{
    print 'Try again m9';
    exit();
}

1 个答案:

答案 0 :(得分:2)

fetchAll返回包含所有结果集行的数组。因此,如果您使用password,则可以$data_array[0]['password']访问$data_array = $stmt->fetch(PDO::FETCH_ASSOC); 。 您可能需要使用fetch

var prevShadow = $('#myDiv').css('box-shadow');
$('#myDiv').css('box-shadow', prevShadow + ' inset');