Php sql查询应该为null但不是

时间:2017-09-07 01:43:52

标签: php sql

我希望以下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字段和整个表格都是空的。

3 个答案:

答案 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 ";
}