2016-03-02 90 views
0

我使用的是正常的INSERT sql语句,但由于某种原因,当我插入代码时,它以这种方式出现。这里是我的代码:Sql表格未正确格式化

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

我的SQL表:

my broken sql table

+0

'$ comment'有回车符在里面。 – Barmar

+0

在MYSQL中的表格格式是相对于你的窗口的大小 – Fallenreaper

+0

什么是回车? @Barmar –

回答

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; 
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); 

OR

$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