Php For循环中的If语句=问题

Php For循环中的If语句=问题,php,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']);

由于某些原因,我的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!';
    }
}
$query=“从博客中选择标题”;
$result=mysql\u query($query);
$rows=mysql\u num\u rows($result);
对于($j=0;$j<$rows;++$j)
{
如果(isset($_POST['$j']))
{
$id=mysql\u real\u escape\u字符串($\u POST['id']);
$query=“从blog中删除,其中id='$id';
mysql\u查询($query);
回音“已删除的帖子…”;
回声';
}
其他的
{
echo“失败!”;
}
}
发生的情况是,“删除的帖子…”和“链接”与我在表blog中的行数相呼应。我的表中只有一行被删除,这正是我想要的。每次按下一个按钮,那么它不应该只重复一次“删除的帖子…”和其他时间的“失败”吗?谢谢=)

注意:我还是编程新手,如果这个问题很愚蠢的话,我很抱歉


注2:我在另一页上有许多按钮。。它们由数字“1、2、3”等标记。

变量不以单引号解析,您需要使用双引号<代码>isset($\u POST[“$j”]

此外,您试图在循环中反复删除同一记录,您正在检查是否设置了
$\u POST[“$j”]
,但使用
$\u POST['id']

更改:

$_POST['$j'] // here, due to the single quotes you're
             // always testing for the literal `$j`, and not
             // the value of current loop iteration.
致:

试试这个

<?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!';
        }
    }

?>


问题在于,您正在通过$\u POST[0]循环到$\u POST[Whatever],但您只删除ID=$\u POST['ID']的位置。$\u POST['ID']永不更改。即使您在一次又一次地循环,您仍在尝试为每个循环删除同一行。这将不起作用,因为POST或GET或请求仅从上一页中获取发布到当前页的内容

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

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

$j = $_POST['j'];

if(isset($_POST['j'])){
for($j = 0; $j < $rows; ++$j){
//your code
}
}
$j=$\u POST['j'];
如果(isset($_POST['j'])){
对于($j=0;$j<$rows;++$j){
//你的代码
}
}

希望这有帮助

请不要使用
mysql\u*
函数,它已弃用(请参阅),易受sql注入的影响。请使用或。@Tom,一旦你被锁定并锁定后重新安装所有内容,你就会这样做。@Theblatone我正在将代码转换为MySQLi。:)即使这样也不行。。我得到了“失败”的行数。
$j = $_POST['j'];

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