由于某种原因,我的if语句不能按预期工作。
$query = "SELECT title FROM blog";
$result = mysql_query($query);
$rows = mysql_num_rows($result);
for ($j = 0; $j < $rows; ++$j)
{
if (isset($_POST['$j']))
{
$id = mysql_real_escape_string($_POST['id']);
$query = "DELETE FROM blog WHERE id='$id'";
mysql_query($query);
echo 'Deleted post.. ';
echo '<a href="blog.php">Click here</a>';
}
else
{
echo 'Failed!';
}
}
“删除帖子......”和“链接”会在我的表博客中回显我的行数。我的表中只有一行被删除,但这就是我想要的。每次按下一个按钮,所以不应该只回显“删除帖子...”一次并且“失败!”剩下的时间?谢谢=)
注意:我还是编程的新手,对不起,如果这个问题很愚蠢。
注2:我在另一页上有很多按钮..它们用数字'1,2,3'等标记。
答案 0 :(得分:2)
变化:
$_POST['$j'] // here, due to the single quotes you're
// always testing for the literal `$j`, and not
// the value of current loop iteration.
为:
$_POST[$j]
答案 1 :(得分:1)
变量不用单引号解析,您需要使用双引号。 isset($_POST["$j"]
您还试图在循环中反复删除相同的记录,您正在检查是否设置了$_POST["$j"]
但是使用了$_POST['id']
答案 2 :(得分:0)
试试这个
<?php
$query = "SELECT title FROM blog";
$result = mysql_query($query);
$rows = mysql_num_rows($result);
for ($j = 0; $j < $rows; ++$j)
{
if (isset($_POST[$j]))
{
$id = mysql_real_escape_string($_POST['id']);
$query = "DELETE FROM blog WHERE id='" .$id ."'";
mysql_query($query);
echo 'Deleted post.. ';
echo '<a href="blog.php">Click here</a>';
}
else
{
echo 'Failed!';
}
}
?>
答案 3 :(得分:0)
问题是你正在循环$ _POST [0]到$ _POST [Whatever],但你只是删除ID = $ _POST ['id']的地方。 $ _POST ['id']永远不会改变。即使你一遍又一遍地循环,你仍然试图为每个循环删除相同的行
答案 4 :(得分:0)
它不起作用,因为POST或GET或REQUEST只接受从上一页发布到当前页面的内容。
您需要将某些变量发布到某个页面,然后才能使用$_POST['j']
。您不能在POST
如果您从其他页面发布j
,那么我认为您可以使用此条件而非使用此类
$j = $_POST['j'];
if(isset($_POST['j'])){
for($j = 0; $j < $rows; ++$j){
//your code
}
}
希望这有帮助