mysql_ abfragen in mysqli_ ändern

  • PHP

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von JustinPaar.

    mysql_ abfragen in mysqli_ ändern

    Hallo,

    Ich wollte mal fragen wie ich z.b diese abfrage hier umschreiben müsste damit das ganze in mysqli funktioniert?

    PHP-Quellcode

    1. <?php
    2. $pageabfrage = mysql_query("SELECT * FROM messages ORDER BY id DESC");
    3. while($row = mysql_fetch_object($pageabfrage))
    4. { ?>
    5. <tr>
    6. <td>#<?php echo $row->id; ?></td>
    7. <td><a class="text-danger" href="./index.php?p=page&page=<?php echo $row->id; ?>" target="_blank"><?php echo $row->pagename; ?></a></font></td>
    8. <td><a class="text-danger" title="Bearbeiten" href="./index.php?p=pageverwaltung&f=edit&page=<?php echo $row->id; ?>"><i class="fa fa-pencil"></i></a> |
    9. <a class="text-danger" title="L&ouml;schen" href="./index.php?p=pageverwaltung&f=delete&page=<?php echo $row->id; ?>"><i class="fa fa-trash"></i></a></td>
    10. </tr>
    11. <?php } ?>


    Danke im Voraus

    M.f.g
    PC: Dell Optiplex 760
    Prozessor: Intel Core 2 Duo E8400
    RAM: 8GB
    Hast du einfach mal versucht, mysql_query durch mysqli_query und mysql_fetch_object durch mysqli_fetch_object zu ersetzen? ;) Das müsste eigentlich alles sein.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hab ich funktioniert leider nicht :/

    Habe die PHP Error Reporting funktion eingeschaltet und spuckt das hier aus:

    Warning: mysqli_query() expects at least 2 parameters, 1 given in /var/www/vhosts/xxx/httpdocs/admin.php on line 4Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, null given in /var/www/vhosts/xxx/httpdocs/admin.php on line 5
    PC: Dell Optiplex 760
    Prozessor: Intel Core 2 Duo E8400
    RAM: 8GB
    Dann sag doch bitte, was genau nicht funktioniert. Gibt es Fehlermeldungen? Evtl. die Fehlerbehandlung in PHP einschalten, per ini-Datei oder per Code.

    Poste doch mal den ganzen Code, dann sehen wir vielleicht den eigentlichen Fehler.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Die Fehlermeldung hab ich oben eingefügt

    der Code für den Connect ist:

    PHP-Quellcode

    1. <?php
    2. $db = new mysqli("localhost", "xxx", "xxx", "xxx);
    3. if (mysqli_connect_error()) {
    4. die('Connect Error (' . mysqli_connect_errno() . ') '
    5. . mysqli_connect_error());
    6. }
    7. ?>
    PC: Dell Optiplex 760
    Prozessor: Intel Core 2 Duo E8400
    RAM: 8GB
    Schau dir mal die Befehle
    mysqli_more_results()
    mysqli_next_result()
    an.

    Die must du nach mysqli_query erst aufrufen
    if (mysqli_more_results()){
    $test = mysqli_next_result()
    }

    so ungefähr.
    CCU2 • Raspberry für Wetterstation • Cubietruck für ioBrokerCMS • HP ProLiant MicroServer Gen8 12GB 2x3TB Server 2012 R2 • PHP • MYSQL • VB.NET (Anfänger)
    Ich würde dir empfehlen, die objektorientierte und prozedurale Version nicht zu vermischen. Wenn dann das eine oder das andere.

    Du benötigst bei der prozeduralen Variante als erstes Argument das Handle, das bei mysqli_connect zurückgegeben wird, wie man hier in dem Beispiel von php.net gut sehen kann:

    PHP-Quellcode

    1. <?php
    2. $mysqli = mysqli_connect("example.com", "user", "password", "database");
    3. $res = mysqli_query($mysqli, "SELECT 'Please, do not use ' AS _msg FROM DUAL");
    4. $row = mysqli_fetch_assoc($res);
    5. echo $row['_msg'];
    6. ?>


    Um es komplett objektorientiert umzusetzen, kannst du das so nutzen:

    PHP-Quellcode

    1. $mysqli = new mysqli("example.com", "user", "password", "database");
    2. if ($mysqli->connect_errno) {
    3. echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    4. }
    5. $res = $mysqli->query("SELECT * FROM messages ORDER BY id DESC");
    6. while($row = $res->fetch_object()) {
    7. // Hier verarbeiten
    8. }


    Wenn du noch mehr über das Dual-Interface (also prozedural und objektorientiert, wie es PHP nennt) von MySQLi wissen willst, kannst du hier vorbeischauen:
    php.net/manual/de/mysqli.quickstart.dual-interface.php

    ~ Alexander M.
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
    der Code für den Connect ist:

    Das glaub ich nicht, denn in deinem Code fehlt ja das schließende Anführungszeichen.

    Also ich mach das ja immer gern mit PDO, aber ob du jetzt MySqli oder PDO benutzt, ist dir überlassen. PDO akzeptiert halt keinen prozeduralen Shit, was nice ist.

    PHP-Quellcode

    1. <?php
    2. # Data source name
    3. $dsn = "mysql:host=localhost;dbname=NAME_DER_DATENBANK;charset=utf8";
    4. # Einige Optionen festlegen (optional)
    5. $options = [
    6. # Natural case
    7. \PDO::ATTR_CASE => \PDO::CASE_NATURAL,
    8. # Error mode
    9. \PDO::ATTR_ERRMODE => (DEBUG ? \PDO::ERRMODE_WARNING : \PDO::ERRMODE_SILENT),
    10. # Fetch mode
    11. \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    12. ];
    13. $db = null;
    14. try {
    15. # Ein PDO Objekt erstellen
    16. $db = new \PDO($dsn, 'DB_BENUTZER', 'DB_PASSWORT', $options);
    17. } catch (\Exception $e) {
    18. exit($e->getMessage());
    19. }
    20. # Ein SELECT Statement ausführen ...
    21. $Data = $db->query("SELECT * FROM `messages`")->fetchAll();
    22. # ... und ausgeben
    23. echo "<pre>" . print_r($Data, 1) . "</pre>";
    24. ?>



    Link :thumbup:


    www.marius-gerum.de
    PHP lernen | Programmierung | Sonstiger Krempel
    Zum Blog | PHP lernen | GitHub | Gists | List of awesome

    Also ich habe es jetzt mal so:

    PHP-Quellcode

    1. <?php
    2. $mysqli = new mysqli("localhost", "xx", "xx", "xx");
    3. if ($mysqli->connect_errno) {
    4. echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    5. }
    6. $res = $mysqli->query("SELECT * FROM messages ORDER BY id DESC");
    7. while($row = $res->fetch_object()) {
    8. echo $row['id'];
    9. echo $row['username'];
    10. echo $row['message'];
    11. }
    12. ?>


    Aber als Errormeldung spuckt er das hier aus:

    Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /var/www/vhosts/friendstime.de/httpdocs/admin/index.php:17 Stack trace: #0 {main} thrown in /var/www/vhosts/xx/httpdocs/admin/index.php on line 17
    Woran könnte das liegen?
    PC: Dell Optiplex 760
    Prozessor: Intel Core 2 Duo E8400
    RAM: 8GB
    Was steht denn in Zeile 17?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    dann die Fragen:

    Was stand in Zeile 17?
    Was war der Fehler?
    Wie hast du es gefixt?

    Forumsfunktion - Lösung teilen!
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Habe das

    PHP-Quellcode

    1. <?php
    2. $res = $mysqli->query("SELECT * FROM messages ORDER BY id DESC");
    3. while($row = $res->fetch_object()) {
    4. echo $row['id'];
    5. echo $row['username'];
    6. echo $row['message'];
    7. }
    8. ?>


    Zu das hier ersetzt dann ging es:

    PHP-Quellcode

    1. <?php
    2. $res = $mysqli->query("SELECT * FROM messages ORDER BY id");
    3. while($row = $res->fetch_object())
    4. { ?>
    5. <?php echo $row->id; ?>
    6. <?php echo $row->username; ?>
    7. <?php echo $row->message; ?>
    8. <?php } ?>
    PC: Dell Optiplex 760
    Prozessor: Intel Core 2 Duo E8400
    RAM: 8GB