尝试理解PHP中的PDO;不断得到null错误


Trying to understand PDO in PHP; keep getting null error

我正试图弄清楚为什么我的PDO方法总是返回null值。从准备到执行,一切似乎都是正确的。

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

$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 = 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;
}

如果代码中混合了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