Ich brauche etwas Hilfe auf PDO. Ich habe einen kleinen Wrapper erstellt, um PDO
Funktionalität zu erweitern, ist die Klasse sehr einfach, ich möchte die Aufmerksamkeit auf die select
-Methode konzentrieren, die für einfache Abfrage funktioniert, aber wenn ich JOIN
in es einfügen scheint PDO
wird die Anweisung nicht ausführen . Dies ist die Methode:Syntaxfehler oder Zugriffsverletzung auf PDO
public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC)
{
$sth = $this->prepare($sql);
foreach ($array as $key => $value)
{
$sth->bindValue("$key", $value);
}
$sth->execute();
return $sth->fetchAll($fetchMode);
}
Jetzt im Konstruktor ich die Ausnahme aktiviert haben wie:
public function __construct($DB_TYPE, $DB_HOST, $DB_NAME, $DB_USER, $DB_PASS)
{
parent::__construct($DB_TYPE.':host='.$DB_HOST.';dbname='.$DB_NAME, $DB_USER, $DB_PASS);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
ich diesen PDO
Wrapper in der Eigenschaft db
gespeichert, so kann ich als die select
Funktion aufrufen: $this->db
, überprüfen Sie die interessiert Abfrage:
$userData = $this->db->select('SELECT id as user_id, email as user_email, role as role_slug
FROM users
INNER JOIN roles ON roles.id = users.role
INNER JOIN user_settings ON user_settings.id_user = user.id
WHERE company = :company, username = :username, password = :password',
array(':company' => $company, ':username' => $username, ':password' => $password));
Wie Sie ich versuche, diesehen wählendes Benutzers auf der Tabelle users
, muss ich auch die Rolle auf der anderen Tabelle namens roles
und die Benutzereinstellung auf die Tabelle user_settings
bekommen. Jetzt ist die username
auf dem Tisch user_settings
, für eine komplette Struktur genannt:
Benutzer
id|id_company|first_name|last_name|email|mobile_phone
user_settings
id_user|username|password
Rollen
id|name
Ich weiß wirklich nicht, was dieser Fehler bedeutet. Wer weiß, was ich falsch mache?
Danke, und Entschuldigung für Fehler, ich bin neu auf dieser Website.
, was der Fehler und Fehlercode ist ..... – NDM
Sie sind nicht die mit 'WHERE 'Klausel richtig. Die Syntax lautet 'WHERE col_1 = 'x' UND | ODER col_2 = 'xy'' usw. http://dev.mysql.com/doc/refman/5.7/en/select.html - Zum Schließen als Tippfehler gewählt. –
@NDM Sorry ich vermisse es, dies in der Frage hinzuzufügen. –