评论框问题;数据未在网站上呈现

时间:2012-11-14 13:00:34

标签: php

我对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。

我有什么要改变的吗?

希望有人可以帮助我进一步解决这个问题。

此致

杰克

1 个答案:

答案 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>";
    }
?>