2017-08-06 9 views
-1

私はPHP 7.0以下でクエリに合致するレコードでMySQLのDBに接続されている実行しています:その1つのレコードだけマッチングがあると予想されるように、mysqli_fetch_rowとSELECT COUNT

$query = mysqli_query($conn, "SELECT COUNT(`user_id`) FROM `users` WHERE `username` = 'baz'"); 
$row = mysqli_fetch_row($query); 
print_r($row[0]); 

プリント出力1をユーザー名。

ただし、以下の機能が

function user_exists(){ 
$exists_query = mysqli_query($conn, "SELECT COUNT(`user_id`) FROM `users` WHERE `username` = 'baz'"); 
$row = mysqli_fetch_row($exists_query); 
return ($row[0] == 1) ? True : False; 
} 

falseを返します。しかし、私はそれが真実であることを期待します。フェッチ機能を悪用していますか?

+0

あなたの 'php.ini'ファイルでは、' error_reporting = E_ALL'と 'display_errors = On'です。 – Phil

答えて

-1

最初のprint_rステートメントは正確に何を出力しますか? 整数ではなく配列を出力します。 $rowは配列の配列です。 だから$row[0]'1'ではなく、array('1')のようになります。

+0

このような基本的な問題があるときは、 'var_dump'で遊んでください。例えば。 'var_dump($ row)'と 'var_dump($ row [0])'を使って変数に含まれるものを確認してください。 – trs

-1

$connにアクセスできないためだと思います。この

function user_exists(){ 
    global $conn; 
    $exists_query = mysqli_query($conn, "SELECT COUNT(`user_id`) FROM `users` WHERE `username` = 'baz'"); 
    $row = mysqli_fetch_row($exists_query); 
    return ($row[0] == 1) ? True : False; 
} 

編集をお試しください: を@trsで述べたように、あなたは$row[0]出力を検討すべきです。

+1

あなたは '$ conn'がアクセスできないと答えて、' $ conn'にまだアクセスできない答えを返します。 – Phil

+0

私はコードをコピーしましたが、答えを書いている間は 'global $ conn'を追加するのを忘れました。私の悪い – Junaid