我希望以下php代码返回一个空值(echo"没有dup"来测试它),但是它会检测到某些东西(echo" dup"),我可以& #39;弄清楚原因:
$isNameThere = 'SELECT FullName FROM tblStudentSchedules WHERE
FullName=\'{$studentName}\'';
$duplicate = mysqli_query($con,$isNameThere);
if(empty($duplicate)) {
echo "no dup";
$addTheName = 'INSERT INTO tblStudentSchedules (FullName) VALUES
(\'{$studentName}\')';
mysqli_query($con, $addTheName);
} else {
echo "dup ";
}
现在FullName字段和整个表格都是空的。
答案 0 :(得分:1)
mysqli_query():
“对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,它将返回一个mysqli_result对象。对于其他成功的查询,它将返回TRUE。失败时为FALSE”
所以$ duplicate永远不会是empty
,你的代码将始终运行else语句。
if(empty($duplicate)) { // Always not empty.
if($duplicate) { // This should work.
答案 1 :(得分:0)
试试这个:
$isNameThere = "SELECT FullName FROM tblStudentSchedules WHERE FullName=\'{$studentName}\'";
$result = mysqli_query($con,$isNameThere);
if(mysqli_num_rows($result)) // count if there are rows affacted
{
echo "no dup";
$addTheName = "INSERT INTO tblStudentSchedules (FullName) VALUES (\'{$studentName}\')";
mysqli_query($con, $addTheName);
}
else
{
echo "dup";
}
另外,添加 mysqli_error()将有助于调试。
mysqli_query($con, $isNameThere) or die("Query failed: ".mysqli_error($con));
答案 2 :(得分:0)
使用fetch_row()检查是否有结果。 如果没有找到行,它将返回false。
if(!$duplicate->fetch_row()) {
echo "no dup";
$addTheName = 'INSERT INTO tblStudentSchedules (FullName) VALUES (\'{$studentName}\')';
mysqli_query($con, $addTheName);
} else {
echo "dup ";
}