MySQLi Probleme..

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQLi Probleme..

    hi,

    ich nutze die Prepared Statements und es gibt ein paar Probleme mit bind_result / bind_param.

    Nutze ich bind_result fallen nach dem fetch sonderzeichen weg (Werden durch Leerzeichen ersetzt).

    Wenn ich bind_param nutze für zb ein LIKE Statement und ich Zeichen wie % unterbringen will hat das kein Effekt. Die ? werden auch nicht in geschachtelten SQL Abfragen erkannt (und es kommt irgend ein mir unlogisches Ergebnis)

    Hier die SQLs die jeweils nicht gehen :
    Die Statements müssen so bleiben da es sonst zu performance problemen kommt, auch hab ich die Statements schon gekürzt das nur noch das Problem eigentlich zu sehen ist.
    PHP-Code:
    $sql "
    SELECT *
    FROM            (  SELECT *
                        FROM sendung
                        WHERE
                             sendung.beitragid = ?
                     )
               AS temptab
               WHERE temptab.zeitstempel < DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 3 WEEK)
               GROUP BY temptab.beitragid
               LIMIT 1;
    "

    hier kommt irgend ein zufälliges Ergebnis das bind_param geht innerhalb des geschachtelten SQLs nicht.

    PHP-Code:
    SELECT                *
               
    FROM          dvd
               WHERE
                    dvd
    .dvd_id = ? && (dvd.klasse LIKE CONCAT('%', ? , '%') || dvd.klasse '')
               
    GROUP BY      dvd_film.dvd_id
               LIMIT 1

    hier bei dem Funktioniert das bind_param bei dem LIKE nicht, hab schon extra mit der concat funktion probiert, aber half nichts.

    Sind diese Probleme bekannt und gibt es Workarounds ausser nicht MySQLi einzusetzen ?

    danke schonmal

  • #2
    Hi,
    wie sieht denn dein execute-statement aus ?

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      Recht normal, ist ja nicht das erste mal das ich mit MySQLi arbeite hatte auch vorher schon Probleme derart. Also der ganz normale Ablauf (ohne store da keien blobs vorkommen)

      aber hier nochmal
      PHP-Code:
      $db = new DB(); // die ist abgeleitet von mysli und selected gleich im constructor...

      // hier sql von vorhin

      $stmt $db->prepare($sql); // prepare erfolgreich

      $stmt->bind_param("ii"$gvar["uid"], $gvar["strid"]); // ist definiert ..

      $stmt->bind_result($resm_id$resm_mode$resm_did$resm_dtvid$resm_comment); // ist definiert..

      $stmt->execute();
      if(
      $stmt->fetch()) {;
      .. 
      // verarbeitung die fehlerhafte daten bekommt...

      nachtrag: beide querys lassen sich einwandfrei ausführen im mysql query browser (Dabei ersetz ich die ? durch die Werte). Nur mit MySQLi gehts halt leider nicht, mit MySQL Query gehts auch (Es sollen jedoch die Prepared Statements genutzt werden)
      Zuletzt geändert von DaRpH; 15.10.2006, 15:44.

      Kommentar


      • #4
        bist du sicher, dass für deine aufgabe PREPARED STARTEMENT überhaupt die Vorteile bringt?
        seit dem bei MySql subqury erlaubt sind, kenne ich kein lebendiger Beispiel, wo es sinnvoll wäre ein PREPARED STARTEMENT einzusätzen.
        Ausnahme, wenn du von einer .txt datei mehrere inserts durchführen willst.
        Slava
        bituniverse.com

        Kommentar


        • #5
          Ich hab da leider eine ziemliche "legacy code" datenbank also eine die so über 5 jahre erweitert wurde und nie neu augesetzt wurde, und führe die selects einzeln aus da meine Tabelle aus mehreren Datenarten (Tabellen) besteht die leider nicht mehr sich in irgend einer Form Joinen lassen etc...

          Kommentar

          Lädt...
          X