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