2017-09-07 17 views
-2

私は次のPHPコードがnull値を返すと期待しています(これをテストするために "no dup"をエコーし​​ます)が、何かを検出します(echo "dup")。理由を把握できません:php sqlクエリはnullである必要があります

$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、およびテーブル全体が空です。

+2

'mysqli_num_rows($ duplicate)== 0'は機能しますか? https://stackoverflow.com/q/16996649/1849664 – Undo

+0

はい!どうもありがとうございました。 –

答えて

1

mysqli_query():

"成功したSELECTについては、SHOW、DESCRIBE、またはクエリをEXPLAINそれがmysqli_resultオブジェクトを返します、他の成功したクエリの場合、それはTRUEを返します失敗した場合にFALSE。。"

だから、$重複は決してemptyにならず、あなたのコードは常にelseステートメントを実行します。

if(empty($duplicate)) { // Always not empty. 

if($duplicate) { // This should work. 
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)); 
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 "; 
} 
関連する問題