2013-08-05 69 views
-1

當我在phpMyAdmin中進行SQL搜索(用變量代替實際值)時,它會返回正確的行號,但是當使用PHP返回此值時,無論如何它總是返回1。提前致謝。mysqli_num_rows返回1無論什麼

function user_exists($username) { 
    $link = mysqli_connect('localhost','root','','test'); 
    $username = sanitize($username); 
    $query = mysqli_query($link, "SELECT COUNT(`user_id`) FROM `new_base` WHERE `username`='$username'"); 
    $row_cnt = mysqli_num_rows($query); 
    echo $row_cnt; 
    mysqli_free_result($query); 
    mysqli_close($link); 
} 
+0

您的閱讀有多少行'SELECT'返回的行號不是 – cmorrissey

+0

已經有數億次被提問過了...... –

+1

COUNT'是一個組函數。它將行組合成一個結果。什麼*確切*你想要這個查詢返回?你可能需要在那裏有一個「GROUP BY」。 –

回答

5

當您使用COUNT(*)總是得到一個返回行,即使計數爲零

您:

  1. 要刪除的count(*)然後用mysqli_num_rows()
  2. 得到count(*)

結果。

$row = mysqli_fetch_assoc($query); 
echo $row['COUNT(`user_id`)']; 
+0

謝謝,跟着你的第一個建議 – jayjay

+0

我在今天搜索了另一個問題之後,在那裏修正了約翰的一個小錯字。讓我們看看他們是否來你的方式;-)問題正在http://stackoverflow.com/q/39002738/ –

+0

@弗雷德 - ii - 好趕上! –

1

計數retrogra a 單排。嘗試在phpmyadmin中測試SQL並查看結果。 查詢返回的這一行具有您正在查找的號碼。

我建議也做這樣

SELECT COUNT('user_id') AS user_matches FROM .... 

這樣,您就可以通過「user_matches」鍵訪問的東西。

*我會不是建議使用SELECT * FROM ... *與num_rows,這將是非常緩慢的count()。

+0

在這個特殊情況下,它不會很慢但實際上是一樣的。但總的來說,你是對的 –