如果循环内的语句=问题

时间:2012-08-22 07:15:50

标签: php

由于某种原因,我的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'等标记。

5 个答案:

答案 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
}
}

希望这有帮助