"Eigentum ist der Zugriff nicht erlaubt noch" Warnung bei der Verwendung von prepared Statements

Ich versuche, eine log-in-system mit AES_ENCRYPT() enkodieren mein Passwort. Aber ich habe eine Warnung von xdebug, wenn Sie versuchen zu implementieren, die diese codes:

...
$key = 'd0gis=SUPER-cute';
$sql = "SELECT * FROM `users2` WHERE username = ? AND pwd = AES_ENCRYPT(?, ?)";
$stmt = $conn->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param('sss', $username, $password, $key);
$stmt->execute();
$stmt->store_result();
...

Wenn der debugger trifft die Linie 8 oder $stmt->prepare($sql);, 6 gleiche Warnung Tabellen aus xdebug sagt:

(!) Warning: main(): Property-Zugriff ist nicht erlaubt, doch in D:\xampp\htdocs\learnphp\includes\authenticate_mysqli.inc.php auf der Linie 8

Die error-Eigenschaft in $stmt ist leer und ich habe echt kein problem, aber ich möchte nur wissen, welche Ursache diese Warnung Nachrichten erscheint.

Gegoogelt, diese Warnung aber nicht finden, eine Lösung:

  1. UPDATE-Abfrage mit prepared statements
  2. http://php.net/manual/en/mysqli-stmt.param-count.php
  • Warum sind Sie mit stmt_init()? Ich habe noch nie gesehen, dass bevor verwendet. In der Regel ist es $db->prepare(...) direkt.
  • Ich Folge ein Beispiel in php.net
  • Das ist seltsam, weil es ' s "andere" Dokumentation, die nahelegt, dass Sie anrufen können prepare direkt auf den link, den Sie haben, und ich habe immer gesehen, es geschieht auf diese Weise.
  • Bitte siehe meine Antwort hier: stackoverflow.com/questions/28870315/... (dupe Frage, nicht sicher, wie Sie Sie zu Kennzeichnen, als solche aber)
  • vielleicht dieses: stackoverflow.com/questions/25377030/...
  • Der zweite link in Ihrer Frage behauptet, die Adresse genau dieses Problem: "um dies Zu verhindern, stellen Sie immer sicher, dass der Rückgabewert von der prepare-Anweisung ist wahr, bevor Sie Zugriff auf diese Eigenschaften." php.net/manual/en/mysqli-stmt.param-count.php#89490

InformationsquelleAutor weeix | 2013-09-16
Schreibe einen Kommentar