alpman: SELECT schlägt fehl

Beitrag lesen

Hallo Sven,

Ich habe auf meiner Spielwiese probiert, dass Problem mit sowenig Code wie möglich nachzustellen und habe dabei das Problem behoben. In der Datenbank steht der Name ohne Escape-Zeichen und die Abfrage liefert auch das gewünschte Ergebnis.

  
<html>  
<head>  
</head>  
<body>  
<form action="test.php" method="post">  
<input type="text" name="test"/>  
<input type="submit">  
</form>  
  
<?php  
$mysqli = new mysqli('localhost', 'root', '', 'pii');  
  
if(isset($_POST['test'])){  
 $t = $mysqli->real_escape_string($_POST['test']) ;  
 echo "<br>".$t;  
  
 $SQL = "INSERT INTO game(name) VALUES ('".$t."');";  
 echo "<br>".$SQL;  
 $mysqli->real_query($SQL);  
  
 $SQL = "SELECT * FROM game WHERE name='".$t."';";  
 echo "<br>".$SQL;  
 $res = $mysqli->query($SQL);  
 foreach($res as $r) {  
  print_r($r);  
  echo "<br>";  
 }  
}  
?>  
</body>  
</html>  

Die echo-Anweisungen ergeben folgende Ausgaben:

\n\r'"
INSERT INTO game(name) VALUES ('\n\r'"');
SELECT * FROM game WHERE name='\n\r'"';
stdClass Object ( [id] => 89 [date] => 0000-00-00 [comment] => [name] => \n\r'" [special] => 0 )

In der Datenbank steht nun

+----+------------+---------+--------+---------+
| id | date       | comment | name   | special |
+----+------------+---------+--------+---------+
| 86 | 0000-00-00 |         | \n\r'" | 0       |
+----+------------+---------+--------+---------+

Tataaaaa!

Bis zum nächsten Fallstrick,

Stefan