2014-10-18 34 views
-3

在我的網頁上爲管理員登錄。我正在按照一個古老的教程,我正在嘗試爲MYSQLI更新它。在他的錄像,一切都運行完美。對於然而我..至少需要X個參數 - 警告,通知

if(isset($_POST['submit'])) { 

    $username = $_POST['username']; 
    $password = md5($_POST['password']); 
    if(empty($username) or empty($password)) { 

     echo "<p class='warn'>Oops!</p>"; 

    } else { 

     $checklogin = mysqli_query(" SELECT id FROM admins WHERE username='$username' AND password='password' "); 

     if(mysqli_num_rows($checklogin) == 1){ 

      echo "You can log in."; 

     } else { 

      echo "Oops"; 

     } 
    } 
} 

Warning: mysqli_query() expects at least 2 parameters, 1 given in /opt/lampp/htdocs/WEBSITES/Site1/admin/login.php on line 29 

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /opt/lampp/htdocs/WEBSITES/Site1/admin/login.php on line 31 
+2

我會推薦使用[PDO](http://php.net/manual/en/book.pdo.php)。海事組織比MySQLi更安全,更易於使用。 – 2014-10-18 20:18:36

+0

您確定該錯誤不是由您的mysqli_query中缺失的$引起的嗎? $缺少部分'[..] AND password ='$ password'「);' – Kommodore 2014-10-18 20:20:23

+1

不要使用帶密碼的MD5 PHP5有處理密碼哈希的新函數 – 2014-10-18 20:20:29

回答

1

您對mysqli_query()調用需要的第一個參數是您的連接到數據庫,這將在mysqli_connect()已退回。這是你的第一個警告。

因爲你沒提供mysqli_query()連接的$checkLogin返回值等於null,這是你第二次警告進來。mysqli_num_rows()預計從一個成功的查詢結果集。

這是你的解決辦法:

$connection = mysqli_connect("host", "user", "pass", "yourDB"); 
$result = mysqli_query($connection, "SELECT some, fields FROM YourTable WHERE something = 'this'"); 
+0

已建立連接,但已不要把'$ connection'放在'mysqli_query'中。它現在有效。謝謝。我會盡可能接受。 – 2014-10-18 20:28:01

+1

@Razzey很高興它工作。請注意,許多MySQLi庫函數的過程版本都需要連接,結果等。確保您查閱這些函數的手冊以找出可能需要的任何參數。 – Crackertastic 2014-10-18 20:31:46

+0

Wil,謝謝!仍在學習所有這些PHP和數據庫的東西。祝你有美好的一天/晚上/晚上! – 2014-10-18 20:33:30

3

有關不正確的參數錯誤通常可以通過查找問題的功能手動來解決。

在這種情況下,去http://php.net/mysqli_query,你會看到這個功能總結:

混合mysqli_query(mysqli的$鏈接,串$查詢[摘要$ resultmode = MYSQLI_STORE_RESULT])

因此,預期的兩個參數是表示與數據庫的連接的mysqli對象(您將在第一次連接時獲得),然後是要運行的SQL字符串(您當前正在傳遞)。

第二個錯誤是第一個錯誤的後果:因爲您沒有檢查錯誤,所以$checklogin不代表成功的查詢結果。


順便說一句,有你可能想在這裏看看其他一些問題,如果該教程沒有去和他們解釋:

相關問題