我正试图弄清楚为什么我的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