Моя последняя ставка заключается в том, что вы используете подготовленные выписки и дополнительно экранируете свое значение перед вводом, например
// newlines will be replaced with '\n' here
$value = mysql_escape_string($_POST["value"]);
$stmt = $dbh->prepare("INSERT INTO myTable (value) VALUES (?)");
// mysql will insert the contents of $value literally.
// so instead of a newline, you will have '\n' (two characters) in your database
$stmt->bindParam(1, $value);
// if you did this statement, everything would be fine. mysql would see your '\n'
// and replace it back to a newline.
mysql_query("INSERT INTO myTable (value) VALUES ('$value')");
Если это так, вам не нужно экранировать свои значения.bindParam
сделает это за вас.Вот несколько примеров того, как вы можете безопасно передавать пользовательский ввод в вашу базу данных.
// not escaped
$value = $_POST["value"];
// escape characters that have special meaning for mysql
$value2 = mysql_escape_string($_POST["value2"]);
// $value2 gets inserted into the query-string. we needed to
// escape it's contents to not mix it up with actual SQL code.
$stmt = $dbh->prepare("INSERT INTO myTable (value, value2) VALUES (?, '$value2')");
// $value gets inserted using bindParam. everything is fine here.
$stmt->bindParam(1, $value);