我对php很新,最近遇到了一个问题。
我在我的网站上使用PHP和MySQL创建了一个评论框,它运行正常,但有一个主要问题。当评论适合html评论框的一行时,评论仅在网站上呈现/存储在数据库中。每当我输入更长的文本时,它就不会保存任何内容。
以下是我使用的代码:
<?php
mysql_connect("localhost","x","x");
mysql_select_db("fendersh_cdreviews");
$name=$_POST['name'];
$comment=$_POST['comment'];
$submit=$_POST['submit'];
$dbLink = mysql_connect("localhost", "x", "x");
mysql_query("SET character_set_client=utf8", $dbLink);
mysql_query("SET character_set_connection=utf8", $dbLink);
if($submit)
{
if($name&&$comment)
{
$insert=mysql_query("INSERT INTO cdreviews (name,comment) VALUES ('$name','$comment') ");
}
else
{
echo "please fill out all fields";
}
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form action="cds.php" method="POST">
<table style="margin-left:15px; background-color:none; border-top: 1px dotted black; border-bottom: 1px dotted black; padding-bottom:5px;">
<tr><td><p style="margin-bottom:-20px;">Name:</p> <br><input type="text" name="name"/></tr>
<tr><td colspan="2"><p style="margin-bottom:-5px;">Comment:</p> </td></tr>
<tr><td colspan="5"><textarea name="comment" rows="3" cols="50"></textarea>
<tr><td colspan="2"><input type="submit" name="submit" value="Comment"></td></tr>
</table>
</form>
<?php
$dbLink = mysql_connect("localhost", "x", "x");
mysql_query("SET character_set_results=utf8", $dbLink);
mb_language('uni');
mb_internal_encoding('UTF-8');
$getquery=mysql_query("SELECT * FROM cdreviews ORDER BY id DESC");
while($rows=mysql_fetch_assoc($getquery))
{
$id=$rows['id'];
$name=$rows['name'];
$comment=$rows['comment'];
echo "<p><b>$name</b>; $comment </p>"
;}
?>
出于安全原因,我已将用户名和密码替换为X.
这就是我正在使用的代码,它运行正常。
它可以连接到数据库;我已将列参数设置为TEXT。
我有什么要改变的吗?
希望有人可以帮助我进一步解决这个问题。
此致
杰克
答案 0 :(得分:-2)
你连接三次。并且仅选择DB一次,当发生以下连接时忘记选择
尝试在代码开头使用仅一个 mysqli_connect()
和仅一个 mysqli_select_db()
。是的,使用mysqli而不是mysql。不推荐使用mysql(或者我认为)。
请以此为例...示例,未经测试,但应该有效:
<?php
mysql_connect("localhost","x","x");
mysql_select_db("fendersh_cdreviews");
mb_language('uni');
mb_internal_encoding('UTF-8');
if (count($_POST))
{
$name =& $_POST['name'];
$comment =& $_POST['comment'];
$submit =& $_POST['submit'];
if ($submit)
{
if (strlen($name) && strlen($comment))
{
$name = mysql_real_escape_string($name);
$comment = mysql_real_escape_string($comment);
$insert = mysql_query("INSERT INTO cdreviews (name,comment) VALUES ('$name','$comment') ");
}
else
{
echo "please fill out all fields";
}
}
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form action="cds.php" method="POST">
<table style="margin-left:15px; background-color:none; border-top: 1px dotted black; border-bottom: 1px dotted black; padding-bottom:5px;">
<tr><td><p style="margin-bottom:-20px;">Name:</p> <br><input type="text" name="name"/></tr>
<tr><td colspan="2"><p style="margin-bottom:-5px;">Comment:</p> </td></tr>
<tr><td colspan="5"><textarea name="comment" rows="3" cols="50"></textarea>
<tr><td colspan="2"><input type="submit" name="submit" value="Comment"></td></tr>
</table>
</form>
<?php
$getquery = mysql_query("SELECT * FROM cdreviews ORDER BY id DESC");
while($rows = mysql_fetch_assoc($getquery))
{
$id = $rows['id'];
$name = $rows['name'];
$comment = $rows['comment'];
echo "<p><b>$name</b>; $comment </p>";
}
?>