未定义的变量记录



我收到以下PHP错误:undefined variable record

请告知我做错了什么,因为我是PHP的新手。这是我代码的一部分,在我收到错误的地方下面。

if(isset($_GET['id'])){
  $record = mysql_fetch_assoc(mysql_query("SELECT * from accounts WHERE  id = '$_GET[id]'"));
  foreach($record as $key=>$val) $record[$key] = stripslashes($val);
}
<tr>
  <td width="28%"><div align="right">Name</div></td>
  <td width="72%"><input type="text" name="name" value="<?php echo $record['name'] ?>"/></td>
</tr>

在表中调用 <?php echo $record['name'] ?> ,但$record只在 if 语句中设置。这意味着,如果你的if语句不为真,它将被跳过,$record永远不会被设置。

一个简单的解决方法是添加一个 else 子句来捕获未设置 id 的情况。

if(isset($_GET['id'])){
    $record = mysql_fetch_assoc(mysql_query("SELECT * from accounts WHERE  id = '$_GET[id]'"));
    foreach($record as $key=>$val) $record[$key] = stripslashes($val);
} else {
    // No id set, set an empty record
    $record = array('name' => null);
}

您只是在没有获取变量 id 的情况下访问。因此,变量$record永远不会初始化,错误会提示到您的输出。

您可以在 if 语句之前初始化它来修复它,或者仅在设置为或不为空时才回显其值:

if(isset($_GET['id'])){
    $record = mysql_fetch_assoc(mysql_query("SELECT * from accounts WHERE  id = '$_GET[id]'"));
    foreach($record as $key=>$val) $record[$key] = stripslashes($val);
}
<tr>
  <td width="28%"><div align="right">Name</div></td>
  <td width="72%"><input type="text" name="name" value="<?php echo (!empty($record['name']))?$record['name']:""; ?>"/></td>
</tr>

最新更新