2016-09-19 20 views
0

SQL要求の行数を取得しようとしている場合、それ以降の接続は失敗します。SELECT COUNT(*)は、要求が返される場合でも1を返します。

$str = 'SELECT count(*) FROM admins WHERE mail = ? AND mdp = ?'; 
$arr = array($mail, $pass); 
$rqt = sendRqt($str, $arr); 
$tab = $rqt->fetchColumn(); 
$cnt = count($tab); 
echo $cnt; 

それが間違っ0

+2

を試してください: 'print_r($ tab);'。クエリ自体に 'count'を使っています。 'PHP'で' count'をもう一度使う必要はありません。 –

+0

それは何もしません:/あなたのステートメントが1つのカラムを返すので、それはタブの内容 – Orionss

+3

を表示せず、常にカウントする$ cnt = count($ tab)1 –

答えて

3

生活が少し楽にするためにASを使用することができます。

$tab変数に正しい数字がすでに文字列(おそらくPHP設定/バージョンに依存しています)になっていますので、echoとするか、数字になるように整数にキャストしてください。 PHPでしかし

、:

count(0) === 1 
count('0') === 1 

は、例えばhereを参照してください。

count($tab)を削除してください。

+0

私はもはやcount()を使用しませんが、何も返されません – Orionss

+0

@Orionss元のコードの '$ tab'変数にすでに数値があります。 – jeroen

-2

I believe COUNT() needs a column name.返す時間がない理由を私は理解していない: しかし、いずれにせよ(また要求は0を返す必要がある場合)には、それは1を返します。 は、ここに私のコードです! ! count(*)はすべての行をカウントする必要がありますが、私はまだidまたは何かのような列名を推奨します。また、問題は、PHPの関数count()の使用である

$str = 'SELECT count(`COLUMNNAME`) AS cnt FROM table WHERE .... 
+0

これはいつでも0を返します!しかし、AS cntを削除すると、通常どおり1が返されます – Orionss

+0

私がアドバイスしたとおりにコードを変更しました – Orionss

+0

この目的のために列名を指定すると、実際にはクエリが遅くなります。 'COUNT(*)'または 'COUNT(1)'(これは同等です)は、行を数える最も簡単な方法です。 – Devon

0

SQL "COUNT(*)" allwaysはcount(quantity)の値を持つ行を返します。したがって、php count()関数を適用すると、値を含む行が1つあるため常に1が返されますSQL関数COUNT

+0

私はcount()をもう使用せず、何も返されません。 – Orionss

+0

"var_dump($ tab)"を呼び出すと、SQL呼び出しの配列を出力する必要があります。 SQLの間違い – Cesar

+0

配列を返します(0){} – Orionss

関連する問題