2016-04-19 16 views
1

Einfügen habe ich eine heredoc Variable wie folgt aus:eine HTML-Datei in einer MySQL mit PHP Abfrage

$status=<<<EOT 
<p>hello world</p> 
<p>I'm <strong>really</strong>OK!</p> 
<p></p> 
EOT; 

Und ich möchte, wie diese es in meiner MySQL-DB mit Whitespaces von PHP einzufügen:

query="INSERT INTO requests (ID,title) VALUES ('$ID','$status')"; 

Aber ich kann das nicht tun. Was soll ich tun, um das einzufügen?

+0

SQL-Escaping? Haben Sie Fehlermeldungen? Wie genau unterscheidet sich das Ergebnis? Werden Zeilenumbrüche nicht im HTML-Kontext angezeigt? – mario

+0

Mögliches Duplikat von [wie man HTML-Code mit PHP in DB einfügt] (http://stackoverflow.com/questions/24631088/how-to-insert-html-code-into-db-using-php) – geeksal

+0

Sie haben ein Apostroph in Ihrem Text, der die Datenbank verwirrt. Verwenden Sie stattdessen eine vorbereitete Anweisung. – miken32

Antwort

0

Versuchen Sie es mit addslashes()

$status = addslashes($status); 
query="INSERT INTO requests (ID,title) VALUES ('$ID','$status')"; 
1

Sie können es in 2 Möglichkeiten:

mysqli_real_escape_string() wie folgt aus:

$mydb = new mysqli("localhost","root","FedAnd11"); 

$status=<<<EOT 
<p>hello world</p> 
<p>I'm <strong>really</strong>OK!</p> 
<p></p> 
EOT; 

$query="INSERT INTO requests (ID,title) VALUES ('$ID','".$mydb->real_escape_string($status)."')"; 

oder wenn Sie nicht über eine DB-Verbindung haben noch

$status=<<<EOT 
<p>hello world</p> 
<p>I'm <strong>really</strong>OK!</p> 
<p></p> 
EOT; 

$status = str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $status); 

$query="INSERT INTO requests (ID,title) VALUES ('$ID','$status')"; 

Wenn ich dich Problem verstanden habe.

Eine andere Sache, die Sie tun können, ist eine MySQL vorbereitete Anweisung zu verwenden, wenn Sie wirklich so ist $ Status setzen wollen, wie folgt aus:

$status=<<<EOT 
<p>hello world</p> 
<p>I'm <strong>really</strong>OK!</p> 
<p></p> 
EOT; 

$stmt = $dbConnection->prepare('INSERT INTO requests (ID,title) VALUES (?,?)'); 
$stmt->bind_param('is', $ID,$status); 

$stmt->execute(); 

ich denn die $ ID integer ist.

+0

Ich würde vorschlagen, die vorbereitete Aussage nach oben zu verschieben; Wenn Sie eine Frage beantworten, ist es immer eine gute Idee, sie auf die beste Methode zu bringen. Beachten Sie, dass Sie nicht wissen, welche Datenbank-API sie verwenden, könnte PDO oder die alte mysql-API sein. – miken32