php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 18-05-2022, 14:19
qiwi
 Registrierter Benutzer
Links : Onlinestatus : qiwi ist offline
Registriert seit: May 2022
Beiträge: 4
qiwi befindet sich auf einem aufstrebenden Ast
Standard PDO Anfängerfrage

Guten Tag zusammen,

ich möchte mit PDO (PHP MySQL) meine Datenbank abfragen.
Nun bekomme ich das noch einfach hin, wenn es eine Tabelle ist.
Leider schnalle ich nicht, wie das mit einem Join funktioniert.
Also ich verstehe JOINs und kann diese auch ohne Probleme in einem SQL Statement direkt in der DB eingeben und bekomme die gewünschten Ergebnisse.

Ich denke - ich weiß nicht so recht, wie ich die WHILE Schleife formatieren muss.

Meine Abfrage:
PHP-Code:
$query $pdo->prepare("SELECT * 
                            FROM user AS T1
                            JOIN artikel AS T2
                            ON T1.id = T2.fk_user_id
                            WHERE T1.id = $userid
                            "
);
$query->execute();
    while (
$user $query->fetch()){

Wie gesagt - mit einer Tabelle funktioniert das Super wenn ich in der Whilfe Schleife die gewünschen Daten wie folgt anfordere:

PHP-Code:
$user['vorname'
Nun möchte ich aber auch aus der Artikel Tabelle Daten holen.
Meine Frage - in der Whilfe Schleife steht nun nur $user =
Wie muss ich das Umschreiben, damit ich z.B. auch Felder wie folgt holen kann:
PHP-Code:
$artikel['artikelname'
Irgendwo stehe ich hier auf dem Schlauch.
Vielen Dank Euch!!!!
Mit Zitat antworten
  #2 (permalink)  
Alt 18-05-2022, 14:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.880
h3ll wird schon bald berühmt werden
Standard

Du solltest niemals SELECT * verwenden, sondern im SELECT immer die Spalten angeben, die du im Ergebnis haben möchtest.

Dein prepare() ist übrigens komplett sinnlos, wenn du $userid direkt in den SQL-Code schreibst.
Mit Zitat antworten
  #3 (permalink)  
Alt 18-05-2022, 15:07
qiwi
 Registrierter Benutzer
Links : Onlinestatus : qiwi ist offline
Registriert seit: May 2022
Beiträge: 4
qiwi befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Du solltest niemals SELECT * verwenden, sondern im SELECT immer die Spalten angeben, die du im Ergebnis haben möchtest.

Dein prepare() ist übrigens komplett sinnlos, wenn du $userid direkt in den SQL-Code schreibst.
Ok - das mit Select * ist mir vollkommen klar. Bin eben dabei ein Projekt zu machen für meine Prüfung. Werde das auch umgehend ändern in die einzelnen Spalten.

Ich habe jedoch keine Ahnung - nur eine Vermutung, warum das $userid nicht im SQL-Code erscheinen soll. Ich denke, ich mach damit die Sicherheit kaputt?

Aber wie denn sonst?

Ich nutze dieses Forum, da das Internet mitlerweile voll mit Antworten ist, die eben nicht so ganz zu meiner Frage passen.

Oder soll ich doch lieber wieder mySQLi benutzen? Ich benutze eh eine MySQL Datenbank. Ich dachte, ich nehme das aktuellste (PDO) - hab mir aber damit selbst ins Knie geschossen, da ich nicht damit klar komme.
Mit Zitat antworten
  #4 (permalink)  
Alt 18-05-2022, 16:59
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.880
h3ll wird schon bald berühmt werden
Standard

Wenn du dir das PHP-Handbuch zu prepare() ansiehst, wirst du feststellen, dass im SQL-Code Platzhalter für die Werte verwendet werden:

https://www.php.net/manual/de/pdo.prepare.php

Zum Beispiel:

PHP-Code:
$sql 'SELECT foobar FROM my_table WHERE user_id = :user_id';
$stmt $pdo->prepare($sql);
$stmt->execute(['user_id' => 123]); 
Mit Zitat antworten
  #5 (permalink)  
Alt 18-05-2022, 17:40
qiwi
 Registrierter Benutzer
Links : Onlinestatus : qiwi ist offline
Registriert seit: May 2022
Beiträge: 4
qiwi befindet sich auf einem aufstrebenden Ast
Standard

Ja, dort hatte ich mich schon umgesehen. Leider finde ich keine Antwort zu meiner oben gestellen Frage.
Ich habe zwar nun einen Code, der anscheinend dem entspricht wie es sein soll - und auch immer noch genauso funktioniert wie vorher - aber keine Antwort, wie ich $artikel in die WHILE Schleife dazu bekomme.

PHP-Code:
$query $pdo->prepare("SELECT user.id,user.vorname,user.nachname,user.telefon,user.email,
                                user.bemerkung,
                                artikel.id,artikel.art,artikel.hersteller,artikel.beschreibung,
                                artikel.internebezeichnung,artikel.fk_user_id
                                FROM user 
                                JOIN artikel
                                ON user.id=artikel.fk_user_id
                                WHERE user.id = :userid"
);

    
$query->execute(array('userid'=>$userid));
    while (
$user $query->fetch()){ 
Ist das überhaupt möglich? Ich hole mir die einzelnen Felder wie oben angegeben und verlinke z.B. die Mail Adresse - also ich muss in der Lage sein, jedes einzelne Feld individuell bearbeiten zu können. Geht das mit PDO?
Sonst muss ich noch umsteigen - hab nämlich nur noch bis nächste Woche Zeit mit dem Projekt

Geändert von qiwi (18-05-2022 um 17:49 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 18-05-2022, 18:29
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.880
h3ll wird schon bald berühmt werden
Standard

PHP-Code:
$sql "
    SELECT
        u.id userId,
        u.vorname,
        u.nachname,
        u.telefon,
        u.email,
        u.bemerkung,
        a.id artikelId,
        a.art,
        a.hersteller,
        a.beschreibung,
        a.internebezeichnung
    FROM
        user u
    JOIN
        artikel a ON u.id = a.fk_user_id
    WHERE
        u.id = :userid
"
;

$stmt $pdo->prepare($sql);
$stmt->execute(['userid' => $userid]);

while (
$row $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo 
'User ID: ' $row['userId'] . ', Artikel ID: ' $row['artikelId'] . PHP_EOL;

Mit Zitat antworten
  #7 (permalink)  
Alt 18-05-2022, 20:01
qiwi
 Registrierter Benutzer
Links : Onlinestatus : qiwi ist offline
Registriert seit: May 2022
Beiträge: 4
qiwi befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank,

das werde ich mal ausprobieren und mir die Sachen, die nicht so ganz verstehe - die werde ich mal nachschlagen wie z.B. PDO::FETCH_ASSOC. Das wird wohl das Auschlaggebende gewesen sein.

Hab auch nun schon öfter - jetzt eben hier wieder - gesehen, dass man die Anweisung in eine Variable $sql speichert.

Danke - werde das nun mal umsetzen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Anfängerfrage zu php sysz0r PHP Developer Forum 5 04-01-2006 01:42
Anfängerfrage zu VPN y1302 Netzwerk & Internet 0 17-12-2005 12:16
Anfängerfrage JollyTheJoker PHP Developer Forum 6 29-10-2002 22:47
anfängerfrage Möter PHP Developer Forum 1 26-09-2002 20:34
Anfängerfrage... Mack PHP Developer Forum 1 27-03-2001 12:54

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

OnPremise versus Cloud - das richtige System finden
Wir beleuchten in diesem Artikel, die Vor- und Nachteile für Cloud oder OnPremise Systemen. Und warum es definitiv Zeit wird in die Cloud zu wechseln.

09.05.2022 | julia_mjr

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

01.07.2022 Berni | Kategorie: PHP/ Anzeigenmarkt
NewsLetter Script PHP ansehen NewsLetter Script PHP

NewsLetter Script PHP is a simple email subscriptions newsletters script written in PHP and MySQL. Admin could send news in the letters to a mailing list of subscribed visitors. All the news and subscription form could be placed into a page of your web

28.06.2022 nevenov | Kategorie: PHP/ Mail
Contact Form PHP ansehen Contact Form PHP

Each website needs a contact form - Contact Form PHP script is very easy to install on your contacts page and administer.

27.06.2022 nevenov | Kategorie: PHP/ Formular
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:15 Uhr.