我想做的是,如果电子邮件为空,则不执行任何操作,如果条件为真,则回显1,如果条件为假,则回显0。
我的问题是,即使条件是真的,回声也不会显示出来,如果错误仍然不会显示回声。
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "test";
$dbc = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(!empty(@$_POST['email'])) {
$name = @$_POST['name'];
$age = @$_POST['age'];
$address = @$_POST['address'];
$gender = @$_POST['gender'];
$email = @$_POST['email'];
$dupesql = "SELECT * FROM students WHERE email = :email ";
$dupesql = $dbc->prepare($dupesql);
$dupesql->bindParam(':email', $email);
$dupesql->execute();
$num_rows = $dupesql->rowCount();
if($num_rows === 0)
{
echo "1";
$q = "INSERT INTO students(name, age, address, gender, email ) VALUES(:name, :age, :address, :gender, :email)";
$query = $dbc->prepare($q);
$query->bindParam(':name', $name);
$query->bindParam(':age', $age);
$query->bindParam(':address', $address);
$query->bindParam(':gender', $gender);
$query->bindParam(':email', $email);
$results = $query->execute();
}else{
echo "0";
exit;
}
}
?>
答案 0 :(得分:0)
您的情况不是检查电子邮件是否为空。它正在检查是否返回了任何行。您需要重新定位if语句的else部分,如下所示。
if(!empty(@$_POST['email'])) {
// code here
echo "1";
// code here
}else{
echo "0";
exit;
}
答案 1 :(得分:0)
您可能会从$dupesql->rowCount();
返回错误的数据类型。尝试通过var_dump();
编写变量或使用==
的{{1}}。或者您也可以使用空===
变量