WebSite上不显示任何数据,并且使用php插入mysql数据2次

WebSite上不显示任何数据,并且使用php插入mysql数据2次,php,phpmyadmin,Php,Phpmyadmin,嘿,伙计们,这个代码有点问题。这是一个班级网站。当我尝试通过php插入数据时,会在数据库中插入两个空行。当我想在网站上重新显示它时,什么也看不到。我希望有人能伸出援助之手 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.or

嘿,伙计们,这个代码有点问题。这是一个班级网站。当我尝试通过php插入数据时,会在数据库中插入两个空行。当我想在网站上重新显示它时,什么也看不到。我希望有人能伸出援助之手

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Results</title>
<link href="styles/style_sheet.css" rel="stylesheet" type="text/css" />



<style type="text/css">
a:link {
color: #0F0;
}
a:visited {
color: #0F0;
}
</style>
</head>
<body>

<div id="main_container">
<div id="header">

</div><!--End of header-->
<div class="shadow">
<div id="navbar"><a href="index.php">Home</a> &nbsp;&nbsp;&nbsp; <a     href="register.php">Register</a> &nbsp;&nbsp;&nbsp; <a href="login.php">Login</a> / <a     href="<?php echo $logoutAction ?>">Logout</a>&nbsp;&nbsp;&nbsp; <a     href="Search.php">Search&nbsp;&nbsp;&nbsp;<a href="CommentPage.php">Guest Book</a></div><!- -End of NavBar-->
</div><!--End of navbar shadow-->
<br />
<div class="shadow">
<div id="Content">
<h2> Results:</h2>
<p>&nbsp;</p>

<form action="" name="Movie_Search"method="get">
<p>
<?php
$dbread = mysql_connect("localhost","user","pw");
mysql_select_db("db", $dbread);

$id = $_GET['movie_name'];
$movie_results = mysql_query("SELECT MovieID, MovieName, Description, Genre, Rating     FROM movie WHERE MovieName='$id'");
$movie_values = mysql_fetch_assoc($movie_results);

echo 'Title: ' . $movie_values['MovieName'] . '';
echo '<p>Genre: ' . $movie_values['Genre'] . '</p>';
echo '<p>Description: ' . $movie_values['Description'] . '</p>';
echo '<p>Rating: ' . $movie_values['Rating'] . '</p>';

$movieID=$movie_values['MovieID'];
$review_results = mysql_query("SELECT Name, Review FROM reviews WHERE     MovieID='$movieID'");
$review_values =mysql_fetch_assoc($review_results);
 echo '--------------------------------------------------------------------------------------------------------------'. '<br> <br>';
while ($review_values = mysql_fetch_assoc($review_results)) {          
echo $review_values['Name'] . ' says:' .  '<br />' . $review_values['Review'] . '<br />    <br />' . '<hr>';    
 }

$name = $_POST['name'];
$comments =$_POST['comments'];
$result=mysql_query("INSERT INTO reviews (Name, Review, MovieID)
VALUES ('$POST[$name]', '$_POST[$comments]', '$movieID')");

$result_values =mysql_fetch_assoc($result);
?>
</p>
</form>
<p>&nbsp;</p>
<form id="insert_comments" style="border:thin" name="insert_comments" method="POST">
<label>Name:</label>
<br />
  <input type="text" name="name" id="name" />
<br>
  <label for="desc">Comments:<br /></label>
<textarea name="comments" id="comments" cols="45" rows="5"></textarea>
</p>
<p>
 <input type="submit" name="submit" id="submit" value="Submit" />
</p>
</form>
<p>&nbsp;</p>
<input name="" type="hidden" value="$movieID" />
<br />

</div>
<!--End of Contentr-->
</div><!--End of content shadow-->

<div class="footer">

<hr />© Nate Christensen<hr />
</div><!--End of footer-->
</div><!--End of Main Container-->


</body>
 </html>

在第59行插入语句:

$result=mysql_query("INSERT INTO reviews (Name, Review, MovieID) VALUES ('$POST[$name]', '$_POST[$comments]', '$movieID')");
不能将$\u POST直接放入字符串中。 使用圆点。PHP CONTAT操作符在中间插入变量。 你应该这样做:

$result=mysql_query("INSERT INTO reviews (Name, Review, MovieID) VALUES ('".$_POST[$name]."', '".$_POST[$comments]."', '".$movieID."')");
哦,另外,您已经将$\u POST name和comment放入变量中,因此最正确的方法是:

$result=mysql_query("INSERT INTO reviews (Name, Review, MovieID) VALUES ('$name', '$comments', '$movieID')");
另外,如果电影ID是INT类型,则不应使用撇号

它插入了两次,因为您没有放置IF语句来检测是否已提交。在您第一次加载页面时,它会在提交后插入另一个插入。你应该说:

if($_POST['submit']){
    // all php codes
}
还有一件事,请将您的评论修改为:

<!- -End of NavBar-->

第26行

我认为问题在于使用变量:$name、$comments作为数组键

$name = $_POST['name'];
$comments =$_POST['comments'];
在这里,您正在读取$name和$commos的$u POST值

$result=mysql_query("INSERT INTO reviews (Name, Review, MovieID)
VALUES ('$POST[$name]', '$_POST[$comments]', '$movieID')");

但是您使用的是$POST[$name]

Nate,我知道这是吹毛求疵,但为什么要将数据库调用与显示逻辑混为一谈呢?数据库调用可以很容易地转储到一个单独的类方法中,或者至少转储到一个函数调用中,这样可以清理代码,更容易发现错误,让您看起来像个专业人员

在查看代码一段时间后,我注意到您的一个SQL查询字符串包含以下内容:$POST[…]而不是$_POST[…],请尝试在$和POST之间添加下划线

另外,不要忘记使用mysql\u escape\u字符串或mysql\u real\u escape\u字符串从$\u POST数组中清除输入注意:mysql\u real\u escape\u字符串只能在打开的mysql连接内部成功调用。如果不清理输入,数据库或多或少会受到SQL注入攻击

我知道你是一名学生,仍在学习,但现在学习并养成良好的习惯确实更好。

你能添加此代码吗;在这一行的末尾

$review_results=mysql_querySELECT Name,review FROM reviews,其中MovieID='$MovieID'


$movie_results=mysql_query从MovieName='$id'的电影中选择MovieID、MovieName、描述、流派、评级

通过调试器运行变量或在屏幕上转储变量时,变量中有什么?所以这是一个问答网站,而不是一个帮助论坛!你必须先定位你的问题,然后带着一个具体的问题回来!Rico Bañas实际上,是的,您可以将POST数组直接放入字符串中,但是必须使用双引号,这不是最佳做法,但仍然是有效的PHP代码。此外,我认为OP使用$POST而不是$U POST,这是一个很小但很重要的区别,这将导致一个错误…太棒了!工作的奇迹,非常感谢你回答我的问题,现在它不会在我的数据库中添加双空行!!