2016-09-05 23 views
-3

我想做一個頁面來更改數據庫中的密碼。 我所做的形式,這是PHP代碼:PHP的mysqli_query()到PDO

if(isset($_POST['btn-newpass'])) 
{ 
$username = strip_tags($_POST['username']); 
$password = md5(strip_tags($_POST['password'])); 
$password_new = md5(strip_tags($_POST['password_new'])); 
$password_new_conf = md5(strip_tags($_POST['password_new_conf'])); 
$password_in_db= mysqli_query("SELECT password FROM utilizatori WHERE username='$username'"); 

if(!$password_in_db) 
{ echo "The entered username doesn't exist";} 
elseif($password!=$password_in_db) 
{ echo "The current password is wrong";} 

if($password_new == $password_new_conf) 
{$sql = mysqli_query("UPDATE utilizatori SET password='$password_new' WHERE username='$username'");} 

if($sql) 
{ echo "Changed successfully!";} 
else 
{ echo "The passwords do not match";} 
} 

當我嘗試更改密碼,我得到了以下錯誤:

Warning: mysqli_query() expects at least 2 parameters, 1 given in  A:\XAMPP\htdocs\testing\change_password.php on line 10 
The entered username doesn't exist 
Warning: mysqli_query() expects at least 2 parameters, 1 given in A:\XAMPP\htdocs\testing\change_password.php on line 18 
Passwords do not match 

在connection.php我有以下代碼:

class Database 
{ 
private $host = "localhost"; 
private $db_name = "atlx"; 
private $username = "root"; 
private $password = ""; 
public $conn; 

public function dbConnection() 
{ 

    $this->conn = null;  
    try 
    { 
     $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password); 
     $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
    catch(PDOException $exception) 
    { 
     echo "Connection error: " . $exception->getMessage(); 
    } 

    return $this->conn; 
} 
} 

有人能指出我這裏有什麼問題嗎?

編輯:

我實現了對數據庫使用PDO完成連接。我如何將PHP代碼轉換爲與PDO一起使用?

+2

嘗試讀取文檔:HTTP: //php.net/manual/de/mysqli.query.php – Jens

+1

請不要__roll你自己的密碼散列。PHP提供['password_hash()'](http://php.net/manual/en/function.password-hash.php) 和['password_verify()'](http://php.net/manual/ en/function.password-verify.php)請使用它們。 這裏有一些[有關密碼的好點子(https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) 如果您使用的是PHP版本5.5之前的[有可以在這裏找到一個兼容包(HTTPS ://github.com/ircmaxell/password_compat) – RiggsFolly

+0

一些明智的代碼縮進將是一個好主意。它可以幫助我們閱讀代碼,更重要的是,它可以幫助您**調試您的代碼** [快速瀏覽編碼標準](http://www.php-fig.org/psr/psr-2/ )爲了您自己的利益。您可能會被要求在幾周/幾個月內修改此代碼 ,最後您會感謝我。 – RiggsFolly

回答

0

在mysqli_query你必須通過連接變量來執行

替換

$password_in_db= mysqli_query("SELECT password FROM utilizatori WHERE username='$username'") 

隨着

$password_in_db= mysqli_query($con,"SELECT password FROM utilizatori WHERE username='".$username."'") 
+0

其中'$ con'可以被你的連接變量替換。如果你使用過'$ conn',那麼你必須在那個地方使用'$ conn'。 $ conn->的DbConnection()'和添加到您的查詢';'其次是選擇查詢 –

+0

您可以通過創建一個新的類,在你需要它的地方,這樣做 –

+0

'$康恩=新數據庫 –

0
mysqli_query($Database->dbConnection(),"SELECT password FROM utilizatori WHERE username='$username'"); 
0

作爲mysqli_query預計參數1是連接對象。

更換

$password_in_db= mysqli_query("SELECT password FROM utilizatori WHERE username='$username'") 

隨着

$conn = new Database; 
$password_in_db= mysqli_query($conn->dbConnection(),"SELECT password FROM utilizatori WHERE username='".$username."'") 

OR

$password_in_db= mysql_query("SELECT password FROM utilizatori WHERE username='".$username."'") 
0

因爲,您正在使用PDO爲什麼您使用的mysqli_執行數據庫查詢的數據庫連接。瞭解更多關於PDO

如何使用它來進行數據庫查詢

http://php.net/manual/en/book.pdo.php

。或者學習如何使用的mysqli

http://php.net/manual/en/book.mysqli.php

你的答案,如果你需要執行你需要添加在第一個參數的數據庫連接mysqli_query進行數據庫連接。

mysqli_query($dblink, "SELECT * FROM City")

0

你重新編寫的代碼應該是這樣的

if(isset($_POST['btn-newpass'])) 
{ 
$username = strip_tags($_POST['username']); 
$password = md5(strip_tags($_POST['password'])); 
$password_new = md5(strip_tags($_POST['password_new'])); 
$password_new_conf = md5(strip_tags($_POST['password_new_conf'])); 
$password_in_db= mysql_query("SELECT password FROM utilizatori WHERE username='".$username."'") 

if(!$password_in_db) 
{ echo "The entered username doesn't exist";} 
elseif($password!=$password_in_db) 
{ echo "The current password is wrong";} 

if($password_new == $password_new_conf) 
{$sql = mysqli_query("UPDATE utilizatori SET password='$password_new' WHERE username='$username'");} 

if($sql) 
{ echo "Changed successfully!";} 
else 
{ echo "The passwords do not match";} 
} 

您可以瞭解更多關於PDO在這個環節

http://php.net/manual/en/book.pdo.php