2016-09-05 11 views
-3

Ich versuche, eine Seite zu machen, um ein Passwort in der Datenbank zu ändern. ich das Formular aus, und das ist der PHP-Code:PHP mysqli_query() zu 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";} 
} 

Wenn ich versuche, ein Passwort ich folgende Fehlermeldungen erhalten zu ändern:

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 

In connection.php Ich habe den folgenden Code:

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; 
} 
} 

Könnte jemand mich darauf hinweisen, was hier falsch ist?

EDIT:

erkannte ich die Verbindung zur Datenbank wird über PDO erfolgen. Wie kann ich den PHP-Code konvertieren, um mit PDO zu arbeiten?

+2

versuchen, die Dokumentation zu lesen: http: //php.net/manual/de/mysqli.query.php – Jens

+1

Bitte nicht __Rollen Sie Ihr eigenes Passwort hashing.PHP bietet [ 'password_hash()'] (http://php.net/manual/en/function.password-hash.php) und [ 'password_verify()'] (http://php.net/manual/ en/function.password-verify.php) benutze sie bitte. Und hier sind einige [gute Ideen über Passwörter] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) Wenn Sie eine PHP-Version vor 5.5 verwenden [gibt es ein Kompatibilitätspaket hier] (https : //github.com/ircmaxell/password_compat) – RiggsFolly

+0

Einige sinnvolle Codeeinrückung wäre eine gute Idee. Es hilft uns, den Code zu lesen und, was noch wichtiger ist, es wird Ihnen helfen ** Sie debuggen Ihren Code ** [Werfen Sie einen Blick auf einen Kodierungsstandard] (http://www.php-fig.org/psr/psr-2/) zu Ihrem eigenen Vorteil. Sie werden möglicherweise aufgefordert, diesen Code in ein paar Wochen/Monaten zu ändern, und Sie werden mir am Ende danken. – RiggsFolly

Antwort

0

Im mysqli_query müssen Sie

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

Mit

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

Wo '$ con 'durch Ihre Verbindungsvariable ersetzt werden könnte. Wenn Sie $ conn benutzt haben, müssen Sie $ conn an dieser Stelle verwenden. –

+0

Sie können eine neue Klasse erstellen, über an den Ort, wo Sie es brauchen und tun so –

+0

'$ conn = new Database,' und fügen Sie diese zu Ihrer Anfrage '$ conn-> dbConnection();' gefolgt von SELECT-Abfrage –

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

Ersetzen Sie die Ausführung der Verbindungsvariable für geben: Als mysqli_query Parameter 1 erwartet Verbindungsobjekt zu sein .

ersetzen

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

Mit

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

ODER

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

Da Sie PDO verwenden für die Datenbankverbindung, warum Sie mysqli_ verwenden Datenbankabfrage durchzuführen. Erfahren Sie mehr über PDO

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

, wie Datenbankabfrage ausführen es zu benutzen. OR lernen, wie man DB-Verbindung mit mysqli

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

Für Ihre Antwort, wenn Sie mysqli_query Sie Ihre Datenbankverbindung in ersten Parametern hinzufügen müssen durchführen müssen.

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

0

Ihr neu geschrieben Code wie dies

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";} 
} 

sollten Sie mehr über PDO in diesem Link erfahren können

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