我试图找出为什么我的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;
}
答案 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);