Sql表格式不正确

时间:2016-03-02 21:46:01

标签: mysql sql formatting

我正在使用普通的INSERT sql语句,但由于某种原因,当我插入代码时,它就像这样出现。这是我的代码:

$sql="insert into comments (username, comment) values ('$name','$comment')";
mysqli_query($link, $sql);

我的SQL表:

my broken sql table

2 个答案:

答案 0 :(得分:0)

当字符串中存在控制字符时,MySQL的输出格式不能正常工作。它希望字符串中的每个字符在输出中占用一个水平空格,但是换行符会出现在行的开头。

您可以使用以下命令将换行显示为转义序列:

SELECT username, REPLACE(comment, '\n', '\\n') AS comment, id
FROM comments;

如果输入来自Windows,也可能有回车,它返回当前行的开头。你可以用以下代码替换它们:

SELECT username, REPLACE(REPLACE(comment, '\n', '\\n'), '\r', '\\r') AS comment, id
FROM comments;

答案 1 :(得分:0)

您只需使用mysqli_real_escape_string()来转义所有字符。

$sql="insert into comments (username, comment) values ('".mysqli_real_escape_string($name)."','".mysqli_real_escape_string($comment)."')";
mysqli_query($link, $sql);

$name = $mysqli->real_escape_string($name);
$comment = $mysqli->real_escape_string($comment);

$sql="insert into comments (username, comment) values ('$name','$comment')";
mysqli_query($link, $sql);

手动:http://php.net/manual/de/mysqli.real-escape-string.php