【问题标题】:Get variables work beyond curly brackets让变量在大括号之外起作用
【发布时间】:2015-10-14 20:17:54
【问题描述】:

在这段代码中,我现在已经定义了变量 id,如果我在大括号外使用$id,我将得到$id 的错误未定义变量。有什么方法可以在括号外使用变量。

<?php
if (isset($_GET['username'])) {
$check = $db->prepare("SELECT id, email, phone, FROM members WHERE username=:username");
$check->execute(array(':username'=>$username));    
$get = $check->fetch(PDO::FETCH_ASSOC);
$id = $get['id'];
$email = $get['email'];
}
 else {
 // error
}

$posts =$db->prepare("SELECT * FROM posts WHERE id=:id");
$posts->execute(array(':id'=>$id));
$row=$posts->fetch(PDO::FETCH_ASSOC));
$title = $row['title'];
$body = $row['body']; 
?>

【问题讨论】:

  • 首先,您想使用的可能是$_GET,而不是$get。因此,如果您在将$id 设置为$get['id'] 值(可能不存在)后尝试访问它,您将收到未定义的通知。
  • 在大括号外定义它。
  • @AlanMachado 很抱歉造成混淆,但在这里我使用 $get 代替 $row 它不是 $_GET
  • 好的,那么您的问题可能完全是其他问题,例如您的 if 子句使您失败。您没有具体说明它被认为是“大括号外”的确切位置,是从if-else 出来还是只从if 出来(在else 内)?
  • 现在问题已经更新,现在应该清楚了吗

标签: php variables


【解决方案1】:
<?php
 $id=""; //initialize a variable with blank value
 if (isset($_GET['username'])) {
 // query to get data
 $id = $_GET['id'];
 }
 else {
 // error
 }
?>

【讨论】:

  • 您为什么建议 OP 使用 @ 抑制错误?如果$_GET 索引未设置或为空,有最好的方法来检查它,而不是假装错误/通知不存在!
  • @AlanMachado:同意:)
【解决方案2】:

试试这个: 您可以定义您的变量 id,如 global $id; 在 php 标签开始后立即定义。

    <?php
     global $id;
     if (isset($_GET['username'])) {
     // query to get data
     $id = $get['id'];
     }
     else {
     // error
     }
    ?>

【讨论】:

    猜你喜欢
    • 2015-03-18
    • 2013-01-25
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2014-11-23
    • 2014-05-31
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多