嘿,任何人都可以注意到此代码中的任何错误:
<?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
任何人都可以看到任何错误请评论。谢谢! :)
答案 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);
只需将其放在脚本的开头
即可