2017-11-03 24 views
1

私は私の現在のIDの後に次のIDを取得するために使用するクエリを持っていますが、私の現在のIDの後にIDがないときは、クエリはIDを返しません。Selectクエリが空であるかどうかを知る方法

public function select_pers_id($current_id){ 
    $que= $this->query("SELECT * FROM personality_question WHERE personality_question_id > $current_id ORDER BY $current_id ASC LIMIT 1"); 
    $rowp = $que->fetch_assoc(); 
    return $rowp['personality_question_id']; 
} 

、これは私が

$nid = $this->select_pers_id($currentid); 

を働いているクエリが、IDが、それらの非を返さない私のシステムに伝えるために異なる時間にこのコードのブロックを使用しようとしたことがあり、それを呼び出す方法です ​​

私はあなたのselect_pers_id()これに変更します時間

答えて

1

のために、ここで立ち往生されて:

あなたが最初 SELECTクエリが rowCount() を使用して返される行をカウントして結果を返すかどうかを確認
public function select_pers_id($current_id){ 
    $que= $this->query("SELECT * FROM personality_question WHERE personality_question_id > $current_id ORDER BY $current_id ASC LIMIT 1"); 
    if ($que->num_rows > 0) { 
     $rowp = $que->fetch_assoc(); 
     return $rowp['personality_question_id']; 
    } else { 
     return -1; 
    } 

} 

[EDIT @のCD001の啓発と、あなたがnum_rowsを使用する必要がある]、もしそうなら、あなたは返します(この例では-1)無効な値を返すid

+1

コードは 'PDO'よりも' mysqli_'のように見えるので( 'rowCount()'はうまくいかないでしょう) 、 'rowCount()' [SELECTクエリと一緒に使うべきではありません](http://php.net/manual/en/pdostatement.rowcount.php)です。 – CD001

0

あなたの検証はNULLか空であるかのどちらかを探しています。投げるために

とエラー$ NIDが既存されていないとき、私は試してみた:

if(!$nid) { 
    $sign = 'false'; 
    echo json_encode(array("value" => $sign, "value2" => $error)); 
} 
+0

もこれを試しました。 didnt work – nsikak

0

あなたがnum_rowsでrecorsの数を確認することができ、その後に続いて

public function select_pers_id($current_id){ 
    $que= $this->query("SELECT * FROM personality_question WHERE personality_question_id > $current_id ORDER BY $current_id ASC LIMIT 1"); 
    if ($que->num_rows > 0) { 
     return null; 
    } 
    $rowp = $que->fetch_assoc(); 
    return $rowp['personality_question_id']; 
} 

にaccoring結果を返しますチェック

$nid = $this->select_pers_id($currentid); 
if($nid==null){ 
    $sign = 'false'; 
    echo json_encode(array("value" => $sign, "value2" => $error)); 
}