2015-10-27 115 views
0

我一直在處理登錄/註冊系統,如本視頻:https://www.youtube.com/watch?v=Til3oVNlho4&index=7&list=PLE134D877783367C7,但問題在於它使用Mysql而不是Mysqli函數,這使得我幾乎不可能理解作爲初學者。基本上,我堅持數據庫檢查,如果「user_exists」功能。任何人都可以將我指向正確的方向嗎?註冊和登錄代碼無效

<?php 


function user_exists($username) { 
    include 'core/database/connect.php'; 
    $username = sanitize($username); 
    $sql = "SELECT COUNT(user_id) FROM `users` WHERE username = '$username'"; 
    $query = mysqli_query($db, $sql); 
    return (mysqli_result($query, 0) == 1) ? true : false; 
} 
function mysqli_result($res,$row=0,$col=0) { 
    $numrows = mysqli_num_rows($res); 
    if ($numrows && $row <= ($numrows-1) && $row >=0){ 

     mysqli_data_seek($res,$row); 

     $resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res); 

     if (isset($resrow[$col])) { 
      return $resrow[$col]; 
     } 
    } 
    return false; 
} 
?> 

然後我真的做了檢查,如果該用戶存在:

if (user_exists('bill') === true) { 
    echo 'exists'; 
} else { 
    echo 'not ok'; 
} 

它總是返回即使用戶是在我的數據庫中不正確的。

+0

看起來像你沒有定義數據庫連接。您在$ query = mysqli_query($ db,$ sql)中使用$ db;但$ db不存在。你能提供var_dump($ query)的結果嗎? ? – zachu

回答

0

$numrows的條件總是計算爲0.因此,它返回false並因此不正確。

+0

難道你可能正確的代碼適合我的方式你認爲合適嗎? –

0

function user_exists($username) { 
 
    include 'core/database/connect.php'; 
 
    $username = sanitize($username); 
 
    $sql = "SELECT user_id FROM `users` WHERE username = '{$username}'"; 
 
    $result = mysqli_query($db, $sql); 
 
    $num_rows = mysqli_num_rows($result); 
 
    return $num_rows > 0 ? true : false; 
 
}

嘗試,你並不需要第二功能。這段代碼不檢查驗證或實現try/catch塊。我修改了你的SQL語句,因爲你只需要看看結果是否返回高於零的結果。

+0

感謝您抽出寶貴時間,但仍然總是以虛假形式返回......我失去了希望,我想我會放棄這個項目一段時間。 –

+0

如果你直接在數據庫中運行你的SQL語句,你會得到任何測試用戶名的結果嗎?如果是的話,如果你做var_dump($結果);你看到了什麼? – dchayka