Yadgar: MySQL-Query funktioniert nicht wie sie soll

Hi(gh)!

Folgende Query in einem PHP-Skript:

$query = "SELECT ID FROM sonderzeilen WHERE Text = '".mysql_real_escape_string($Sonderzeile)."'";  
echo "<p>".$Sonderzeile."</p>";  
$result = mysql_fetch_row($query);  
dberror();  
$row = mysql_fetch_row($result); // sonderzeilen.ID  
$ids[1] = $row[0];  
echo $row[0]."<br>";  

führt in der letzten Zeile zu einer leeren Ausgabe, obwohl $Sonderzeile tatsächlich eine Textzeile aus sonderzeilen.Text enthält (und auch kein Whitespace dranhängt).

Gebe ich dieselbe Query (dann natürich mit Literal statt Variable) direkt in MySQL ein, z. B.

SELECT ID FROM Sonderzeilen WHERE Text = 'Schwingungen-Wahl 1985, Vorschläge Teil 1';

bekomme ich die entsprechende ID angezeigt.

Die Tabelle sonderzeilen sieht zur Zeit so aus:

+----+--------------------------------------------+-----------+  
| ID | Text                                       | Leerzeile |  
+----+--------------------------------------------+-----------+  
|  7 | Bester Interpret/Beste Gruppe des Jahres   |         0 |  
|  8 | Bester Neuling des Jahres                  |         0 |  
|  5 | Bester Titel des Jahres                    |         0 |  
|  6 | Bestes Album des Jahres                    |         0 |  
|  9 | Ende der Auswertung des Jahres             |         1 |  
|  4 | Schwingungen-Wahl 1985, Auswertung         |         1 |  
|  2 | Schwingungen-Wahl 1985, Vorschläge Teil 1  |         1 |  
|  3 | Schwingungen-Wahl 1985, Vorschläge Teil 2  |         1 |  
+----+--------------------------------------------+-----------+  

Stimmt irgendetwas mit mysql_real_escape_string nicht? Kann eigentlich nicht sein, denn ich verwende mysql_real_escape_string auch an anderen Stellen des Skripts, und da gibt es keine Probleme. An der Kollation kann es auch nicht liegen, das Problem mit sonderzeichen.Text tritt auch bei Einträgen ohne Nicht-ASCII-Zeichen auf.

Ich bin ratlos...

Bis bald im Khyberspace!

Yadgar

  1. Meine Herren,

    $query = "SELECT ID FROM sonderzeilen WHERE Text = '".mysql_real_escape_string($Sonderzeile)."'";

    // [...]
    $result = mysql_fetch_row($query);

      
    `mysql_query()`{:.language-php} vergessen?
    
    1. Hi(gh)!

      Meine Herren,

      $query = "SELECT ID FROM sonderzeilen WHERE Text = '".mysql_real_escape_string($Sonderzeile)."'";

      // [...]
      $result = mysql_fetch_row($query);

      
      >   
      > `mysql_query()`{:.language-php} vergessen?  
        
      Habe ich zwischenzeitlich auch gerade gemerkt... das kommt davon, wenn man von Hand debuggen muss!  
        
      Bis bald im Khyberspace!  
        
      Yadgar