【问题标题】:PHP variables not available inside while loop [closed]PHP变量在while循环中不可用[关闭]
【发布时间】:2013-08-27 15:21:03
【问题描述】:

我有来自 ajax 调用的 PHP 变量。但是,当他们通过 if 语句和 while 循环时,它们是未定义的,我该如何解决这个问题。我什么都做不了。

$userID = $_POST['id'];
$clubID = $_POST['clubID'];
$type = $_POST['type'];
$delAtt = $_POST['delAtt'];

其余代码

if($delAtt == 1)
{
    $result = mysql_query('SELECT * FROM events WHERE clubID = "'.$clubID.'"');

    while ($row == mysql_fetch_assoc($result))
    {

        $eventID = $row['eventID'];
        echo $eventID;

         mysql_query('DELETE FROM eventmember WHERE userID = "'.$userID.'" AND eventID = "'.$eventID.'"');
         mysql_query('DELETE FROM eventmember2 WHERE userID = "'.$userID.'" AND eventID = "'.$eventID.'"');
         mysql_query('DELETE FROM eventmember3 WHERE userID = "'.$userID.'" AND eventID = "'.$eventID.'"');

         mysql_query('DELETE FROM attendance WHERE userID = "'.$userID.'" AND eventID = "'.$eventID.'"');
         mysql_query('DELETE FROM attendance2 WHERE userID = "'.$userID.'" AND eventID = "'.$eventID.'"');
         mysql_query('DELETE FROM attendance3 WHERE userID = "'.$userID.'" AND eventID = "'.$eventID.'"');

     }
}

所有变量都在 if 语句中起作用,但不在 while 循环中

【问题讨论】:

  • 没有什么问题,你是做ajax POST还是GET?另外,检查拼写,区分大小写。
  • 你确定你进入了 if {} 块吗?也许 delAtt 是 2 或 "1"
  • 我将其设置为 1 只是为了进行测试,此外,当我回显 $clubID 时,它在 if {} 语句中有效,但在 while 循环中无效
  • 如果您的数据库中没有任何带有已发布的 clubID 的事件,这是正常的。
  • mysql_* 函数不再维护,不应在任何新代码库中使用。它正在逐步淘汰,以支持更新的 API。相反,您应该将prepared statementsPDOMySQLi 一起使用。

标签: php variables if-statement while-loop global


【解决方案1】:
if(isset($_POST['delAtt'])){
    $userID = $_POST['id'];
    $clubID = $_POST['clubID'];
    $type = $_POST['type'];
    $delAtt = $_POST['delAtt'];
}
else{
    $delAtt = 0
}

// Rest of code

并正确分配这一行:

while ($row == mysql_fetch_assoc($result)){
            ^

收件人:

while ($row = mysql_fetch_assoc($result)){

【讨论】:

  • 但是,我在帖子之后手动设置了变量来测试代码,它仍然不起作用
  • 确保$_POST 具有任何值。 var_dump($_POST); 显示。
  • 所有变量都在 if 语句中起作用,但不在 while 循环中
  • 您在 while 循环中是否更正了分配,但仍有问题?
  • 是的,非常感谢
【解决方案2】:

您可以随时检查 POST 变量,如下所示:

if (isset($_POST["id"]) && !empty($_POST["id"])) { //TO DO }

这样您就更容易知道您的 POST 变量是否真的发布到接收页面。

以下代码可以显示您在 POST 变量数组中拥有的内容。

print_r($_POST);

【讨论】:

  • 但是,我在帖子之后手动设置了变量来测试代码,它仍然不起作用
  • 所有变量都在 if 语句中起作用,但不在 while 循环中
猜你喜欢
  • 2017-06-18
  • 2012-10-29
  • 2013-03-26
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多