Ich arbeite an einer Website; Apache fragt mich, auf die neue Methode von PDO zu aktualisieren.Schwerwiegender Fehler: Aufruf einer Memberfunktion prepare() für eine ganze Zahl
Ich habe meine Funktion, die alle Informationen von Benutzer X sammeln wird, angezeigt durch die Variable $ _SESSION ['Benutzername'].
Mein Problem ist: Ich bekomme den Fehler Titel. Ich möchte jedoch String- und INT-Werte sammeln.
Meine Funktion: functions.php
function getDetails($username) {
$db = require("dbConn.php");
$sql = $db->prepare("SELECT * FROM `es42_members` WHERE HandleName='$username'");
$sql->execute();
$row = $sql->fetchAll();
return $row;
}
Meine Index-Datei: index.php
$details = getDetails($_SESSION['username']);
while ($row = $details->fetch_assoc()) {
$id = $row['UserID'];
$email = $row['Email']; // This return String
$isAdmin = $row['isAdmin']; //This return 0 - 1. But in the table is registered by String (Varchar).
}
echo "Your email is: $email";
if($isAdmin == "1"){ echo "You are a admin!" }
UPDATE Mein neuer Code ist wie folgt:
Funktion: @Marcus
function getDetails($username) {
require("dbConn.php");
$sql = $db->prepare("SELECT * FROM `es42_members` WHERE HandleName='$username'");
$sql->execute();
$row = $sql->fetchAll();
return $row;
}
dbConn.php [Original]
<?php
$db = new PDO('mysql:host=localhost;dbname=ProfileTest', "root", "1234");
$db = null;
?>
dbConn.php [Edited und Arbeits]
<?php
$db = new PDO('mysql:host=localhost;dbname=ProfileTest', "root", "1234");
?>
Schauen Sie sich an, was der Fehler sagt. 'Aufruf an eine Elementfunktion prepare() für ganze Zahlen. Das bedeutet, dass $ db eine Ganzzahl und keine Datenbankverbindung ist. – Mike
Außerdem möchten Sie normalerweise nur einmal pro Anforderung eine Verbindung zu Ihrer Datenbank herstellen und diese als Parameter an eine Funktion übergeben, die sie benötigt, oder sie als Klasseneigenschaft speichern. Wenn Sie Ihre Verbindung in Ihre 'getDetails'-Funktion einfügen, steht sie nicht für die Wiederverwendung an anderer Stelle in Ihrem Skript zur Verfügung. – Mike
Gehen Sie durch Ihre 'dbConn.php' Datei Zeile für Zeile und ich denke, der Fehler ist ziemlich offensichtlich. Komm schon, du versuchst es nicht mal hier. – Mike