检查帖子是否存在

时间:2013-12-19 13:47:54

标签: php mysql

所以我想检查数据库中是否存在帖子,但是我在重定向时遇到了一些问题。 到目前为止,这是我的工作:

echo '<br>';//the $row part tells the DB what post his looking on
echo '<a href="comments.php?post_id='. $row['id'].'">View comments</a>';

这是显示评论按钮,指向您看到帖子评论的部分。


<?php
require_once ('checkp.php');

我需要一次检查帖子。


<?php
include ('variables.php');
//connects to DB
$dbc=mysql_connect($host,$user,$pass);


if ($dbc) {


 } else {

 echo ('Failed to connect to MySql; '. mysql_error());

 }


 //selects db from MySQl
 $sqldb=mysql_select_db('a2318052_blog');

 $pid=$_GET['post_id'];

 $query1="SELECT * FROM posts_b WHERE id='$pid'";
 $sql=mysql_query($query);

 if ($sql) {


 } else {

 echo "cant run query";

 }


 if (mysql_num_rows($sql) > 0) {

 echo "that post does not exist!";

 } else {

 header ("location: comments.php?post_id='. $pid.'");

 }

 ?>

这是检查空结果然后重定向的脚本。我相信这里的重定向(header(“location:comments.php?post_id ='。$ pid。'”);)

4 个答案:

答案 0 :(得分:1)

您在重定向上混合了引号:

"location: comments.php?post_id='. $pid.'"

应该是

"location: comments.php?post_id=". $pid

php中的点用于连接字符串。在那里,你打开字符串“并用'关闭它'。

编辑:还有其他人已经注意到你正在使用查询而不是query1。 我想也不是:

if (mysql_num_rows($sql) > 0) {

 echo "that post does not exist!";

你想要别的东西:

if (mysql_num_rows($sql) == 0) {

 echo "that post does not exist!";

答案 1 :(得分:0)

你可能不希望post_id周围有单引号......

header ("location: comments.php?post_id=$pid");

答案 2 :(得分:0)

$query1="SELECT * FROM posts_b WHERE id='$pid'";
$sql=mysql_query($query);

您使用$ query而不是$ query1。这可能是问题(连同其他用户指出的串联内容)。

还有一些其他的东西,比如我认为你在这里混淆了你的if / else语句:

if (mysql_num_rows($sql) > 0) {

 echo "that post does not exist!";

 } else {

 header ("location: comments.php?post_id='. $pid.'");

 }

也许您希望订单被撤销?


另外,你应该考虑避免SQL注入! 使用$ GET变量发送查询非常危险,因为用户可以操纵URL并发送恶意查询。

$pid=$_GET['post_id'];

Prepared statements are ideal,但就目前而言,您可以在$ GET变量周围使用mysql_real_escape_string。它阻止人们发送您真正不想要的查询。

答案 3 :(得分:0)

首先改变pid

$pid = intval($_GET['post_id']); // for security

之后

if (mysql_num_rows($sql) == 0)
{
    echo "that post does not exist!";
}
else
{
    header("Location: comments.php?post_id=".$pid);
}