变量未找到错误

时间:2011-03-20 21:47:01

标签: php html syntax

嘿,任何人都可以注意到此代码中的任何错误:

<?php
include("config.php");
if(isSet($_POST['lastmsg']))
{
  $lastmsg = $_POST['lastmsg'];
  $lastmsg = mysql_real_escape_string($lastmsg);
  $result  = mysql_query("SELECT * 
                            FROM updates 
                           WHERE update_time < '$lastmsg' 
                        ORDER BY msg_id DESC
                           LIMIT 9");
  while($row=mysql_fetch_array($result))
  {
    $msg_id  = $row['update_time'];
    $message = $row['item_content'];
  ?>
   <li>
     <?php echo $message; ?>
   </li>
  <?php
  }
  ?>

  //More Button here $msg_id values is a last message id value.
  <div id="more<?php echo $msg_id; ?>" class="morebox">
  <a href="#" id="<?php echo $msg_id; ?>" class="more">more</a>
  </div>
  <?php
}
?>

我收到了这个错误:

Notice: Undefined variable: msg_id in C:\wamp\www\stream_scripts\draft2\ajax_more.php on line 20 Call Stack #TimeMemoryFunctionLocation 10.0012373824{main}( )..\ajax_more.php:0 " class="morebox"> ( ! ) Notice: Undefined variable: msg_id in C:\wamp\www\stream_scripts\draft2\ajax_more.php on line 21 Call Stack #TimeMemoryFunctionLocation 10.0012373824{main}( )..\ajax_more.php:0 " class="more">more

任何人都可以看到任何错误请评论。谢谢! :)

5 个答案:

答案 0 :(得分:4)

这里的问题是如果这个while循环没有运行,$msg_id将永远不会被设置。要解决此问题,请将$msg_id设置为循环外的默认值(即“”),或者在要访问它时检查它是否存在

一个例子可能是

$msg_id = "";
while(/* conditions */){
  //body
}

   while(){
     $msg_id = "something";
   }

   if(isset($msg_id)){
     // access it
   }

答案 1 :(得分:1)

$ msg_id在while循环中作用域。你必须在范围之外宣布它。

演示问题here

解决方案:

在while循环之前添加:

$msg_id = '';
$message = '';

我希望它有所帮助。

答案 2 :(得分:1)

你假设$ result总是返回一些内容,因为在 while 循环中定义了$ msg_id。在尝试获取变量的值之前,可以通过插入条件来检查是否已设置了msg_id,如:

<?
if (isset($msg_id)) {
 //More Button here $msg_id values is a last message id value.?>
 <div id="more<?php echo $msg_id; ?>" class="morebox">
 <a href="#" id="<?php echo $msg_id; ?>" class="more">more</a>
}

此外,以下行看起来不正确:

</li>
<?php
}
?>
* Missing <? here *
//More Button here $msg_id values is a last message id value.

答案 3 :(得分:0)

$msg_id的第二次出现时,你假设它已经被定义,但是如果while循环根本没有循环,那么它就不会。

答案 4 :(得分:-1)

是的。如果while循环没有角色,则不会定义$ msg_id。这不是错误,只是一个通知。如果您不需要此消息,请使用error_reporting函数

  

error_reporting(E_ALL ^ E_NOTICE);

只需将其放在脚本的开头

即可