试图理解PHP中的PDO;继续得到null错误

时间:2015-12-05 06:48:34

标签: php mysql pdo

我试图找出为什么我的PDO方法继续返回空值。从准备到执行,一切似乎都是正确的。

  

即。 "致命错误:在null中调用成员函数prepare()   /blah/register.php在第5行"

$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
if ($email === ''){
    unset($email);
}else{
    $query = $mysqli->prepare('SELECT email FROM `Members` WHERE email=:input_email');
    $query->execute(array(':input_email' => $email));
    foreach ($query as $row) {
        echo $row['email'] . "<br />";
    }
var_dump($query);
die();
}

此代码应回显所有值,然后终止脚本的其余部分。

db connect:

$db = new PDO('mysql:host=hostname;dbname=dbname;charset=utf8', 'dbuser', 'password', array(PDO::ATTR_EMULATE_PREPARES => false, 
                                                                                                PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT));
if ($db->connect_errno) {
    echo "<b>Sorry, this website is experiencing problems. </b>";
    exit;
}

1 个答案:

答案 0 :(得分:1)

您正在将mysqli和pdo混合到您需要更改的代码中mysqli prepare with pdo prepare`

 $query = $db->prepare('SELECT email FROM `Members` WHERE email=:input_email');
          ^^^ //add pdo object here

您需要在执行语句中添加获取数据

 $query = $db->prepare('SELECT email FROM `Members` WHERE email=:input_email');
 $query->execute(array(':input_email' => $email));
 $result = $query->fetch(PDO::FETCH_ASSOC);
 print_r($result);

阅读http://php.net/manual/en/pdostatement.fetch.php