所以我想检查数据库中是否存在帖子,但是我在重定向时遇到了一些问题。 到目前为止,这是我的工作:
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。'”);)
答案 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);
}