2013-12-13 131 views
0

我想盡快擺脫一個錯誤。我正在使用mysql_num_rows,但它總是返回0.我不知道是否因爲我有錯誤的語法或什麼...你們能幫助我嗎?這是代碼;MYSQLI_NUM_ROWS ALWAYS RETURNING 0

<?php 
include_once("checklogin.php"); 
$u = ""; 
if(isset($_GET["u"])){ 
    $u = preg_replace('#[^a-z0-9]#i', '', $_GET['u']); 
} else { 
    header("location: http://www.myswesite.com/login.php"); 
    exit();  
} 
$sql = "SELECT * FROM users WHERE username='$u' AND activated='1' LIMIT 1"; 
$user_query = mysqli_query($connection, $sql); 
$numrows = mysqli_num_rows($user_query); 
if($numrows < 1){ 
    echo "User does not exist or is not yet activated, press back"; 
    exit(); 
} 
?> 
+0

嘗試直接在MySQL中測試Query,結果是什麼? –

+0

嘗試'if($ numrows == 0)'而不是'if($ numrows <1)' –

+0

這可能是您的preg_replace調用。 – Zarathuztra

回答

1

我認爲這是在您的查詢語法錯誤,當你通過用戶名試試這個,我認爲它爲你工作。

$username=$_SESSION['username']; 
    SELECT * FROM tbl_users WHERE Username='".$username."' 
+0

嗯好點,我得到它的工作,我解決了這個問題語法錯誤,非常感謝 – user3063919

5

你必須使用store_result緩衝結果集,然後才能得到NUM行。

$user_query = mysqli_query($connection, $sql); 
mysqli_store_result($connection); 
$numrows = mysqli_num_rows($user_query); 

http://www.php.net/manual/en/mysqli-result.num-rows.php

對於無緩衝的結果集,mysqli_num_rows()將不會返回正確的行數,直到在結果中的所有行已被檢索。