1

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

4

5 回答 5

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]
于 2012-08-22T07:18:46.550 回答
1

变量不是用单引号解析的,需要用双引号。isset($_POST["$j"]

此外,您还试图在循环中一遍又一遍地删除相同的记录,您正在检查是否 $_POST["$j"]已设置但使用$_POST['id']

于 2012-08-22T07:18:39.203 回答
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!';
        }
    }

?>
于 2012-08-22T07:21:36.207 回答
0

问题是您正在循环通过 $_POST[0] 到 $_POST[Whatever],但您只删除了 ID = $_POST['id'] 的位置。$_POST['id'] 永远不会改变。即使你一遍又一遍地循环,你仍然试图为每个循环删除同一行

于 2012-08-22T07:26:11.420 回答
0

它不会起作用,因为 POST 或 GET 或 REQUEST 只获取从前一页发布到当前页面的内容。

您需要将一些变量发布到某个页面,然后才可以使用$_POST['j']. 您不能在 POST 中使用当前页面中的变量

如果您j从其他页面发布,那么我认为您可以使用此条件而不是那样使用

$j = $_POST['j'];

if(isset($_POST['j'])){
for($j = 0; $j < $rows; ++$j){
//your code
}
}

希望这可以帮助

于 2012-08-22T07:29:21.353 回答