0

这段小代码给出了通知:未定义索引:placeno1

我知道它可以通过使用 if(isset()) 来修复,但我不知道如何将它放在这个 $query 行中的正确问题上。

尝试了很多,但无法正确处理。

<?php 
$query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1");
while($row = mysql_fetch_object($query)){
?>

解决方案是

<?php 
if(isset($_SESSION['placeno'.$i])) {
$query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1");
while($row = mysql_fetch_object($query)){
}
}
?>
4

2 回答 2

2

未定义索引是一个数组通知。所以可能的通知来源是'placeno'.$i. 您需要在每个循环中检查它。

我假设您正在使用循环循环此代码for()。那是$i从哪里来的。

<?php 
if (isset($_SESSION['placeno'.$i])) {
    $query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1");
    while($row = mysql_fetch_object($query)){
    }
}
?>

如果它是一个循环,您可以像这样停止循环:

<?php 
if (!isset($_SESSION['placeno'.$i])) {
    break;
}
$query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1");
while($row = mysql_fetch_object($query)){
?>
于 2013-11-05T13:48:06.203 回答
0

使用三元运算符:

 $query = mysql_query("SELECT `id` FROM `place` 
      WHERE `placeno` = '".isset($_SESSION['placeno'.$i])?$_SESSION['placeno'.$i]:""."' 
      LIMIT 1");
  while($row = mysql_fetch_object($query)){

...以及消毒和 mysqli_ 功能:P

于 2013-11-05T13:43:14.157 回答