Notice: Undefined variable: rs in /home/sujata/Public/guestbook4/edit.php on line 44 (48,52,56)
44行: <td><input type="text" name="username" value="<?php echo $rs['username'];?>" /></td>
请问问题出在哪里?
edit.php:
<?php
define('DEBUG', ture);
if (DEBUG) {
ini_set("display_errors", 1);
error_reporting(E_ALL);
}
include "conn.php";
if (!empty($_GET['id'])) {
$sql = 'SELECT * FROM user where id = ' . $_GET['id'];
$query = mysql_query($sql);
$rs = mysql_fetch_array($query);
}
if (!empty($_POST['sub'])) {
$username = $_POST['username'];
$email = $_POST['email'];
$content = $_POST['content'];
$refer_url = $_POST['refer_url'];
$mysql = 'UPDATE user SET username = ' . $username . ', email = ' . $email . ', content = ' . $content . ', refer_url = ' . $refer_url;
if (mysql_query($mysql)) {
echo "修改成功!";
header("refresh:5;url = 'admin.php'");
} else {
echo "修改失败";
}
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html" charset="utf8" />
<title>编辑</title>
</head>
<body>
<table>
<form method="post" action="edit.php">
<tr>
<td>用户名:</td>
<td><input type="text" name="username" value="<?php echo $rs['username'];?>" /></td>
</tr>
<tr>
<td>邮箱:</td>
<td><input type="text" name="email" value="<?php echo $rs['email'];?>" />请输入你的邮箱,方便我们及时取得联系</td>
</tr>
<tr>
<td>内容:</td>
<td><textarea name="content" cols="50" rows="5"><?php echo $rs['content'];?></textarea></td>
</tr>
<tr>
<td>反馈网址:</td>
<td><input type="text" name="refer_url" value="<?php echo $rs['refer_url'];?>" /></td>
</tr>
<tr>
<td><input type="submit" name="sub" value="提交" /></td>
</tr>
</form>
</table>
</body>
</html>
admin.php:
<h1>管理员后台</h1>
<?php
include "conn.php";
$sql = "select * from user";
$query = mysql_query($sql);
while ($rs = mysql_fetch_array($query)) {
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html" charset="utf8" />
<title>管理员后台</title>
</head>
<body>
<hr />
<table>
<form method="post" action="index.php">
<tr>
<td>用户名:</td>
<td><?php echo $rs['username'];?> <a href="edit.php?id=<?php echo $rs['id']?>">编辑</a> <a href="del.php?del=<?php echo $rs['id']?>">删除</a></td>
</tr>
<tr>
<td>留言时间:</td>
<td><?php echo $rs['dates'];?></td>
</tr>
<tr>
<td>邮件:</td>
<td><?php echo $rs['email'];?></td>
</tr>
<tr>
<td>内容:</td>
<td><?php echo $rs['content'];?></td>
</tr>
<tr>
<td>反馈网址:</td>
<td><?php echo $rs['refer_url'];?></td>
</tr>
</form>
</table>
</body>
</html>
<?php
}
?>
index.php:
include "conn.php"; //连接数据库文件
if (!empty($_POST['sub'])) {
$username = $_POST['username'];
$email = $_POST['email'];
$content = $_POST['content'];
$refer_url = $_POST['refer_url'];
$sql = "insert into `user` (`id`,`username`,`dates`,`email`,`content`,`refer_url`) VALUES (null,'$username',now(),'$email','$content','$refer_url')";
$query = mysql_query($sql);
if ($query) {
echo ("已经收到你的信息啦,我们会加快步伐改进的。谢谢你的建议!<br />");
echo ("<a href=#>5秒后将自动跳转到首页,如果没有跳转你可以直接点击此连接</a>");
header("refresh:5;url='index.php'");
} else {
echo "对不起,忙碌....能重新再试一遍吗?>_< " . mysql_error();
header("refresh:5;url='index.php'");
}
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html" charset="utf8" />
<title>意见反馈</title>
</head>
<body>
<table>
<form method="post" action="index.php">
<tr>
<td>用户名:</td>
<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td>邮箱:</td>
<td><input type="text" name="email" value="" />请输入你的邮箱,方便我们及时取得联系</td>
</tr>
<tr>
<td>内容:</td>
<td><textarea name="content" cols="50" rows="5">说点什么?</textarea></td>
</tr>
<tr>
<td>反馈网址:</td>
<td><input type="text" name="refer_url" value="" /></td>
</tr>
<tr>
<td><input type="submit" name="sub" value="提交" /></td>
</tr>
</form>
</table>
</body>
</html>
在调试程序的时候,很多网上提供的源码都会出现 Undefined variable错误,一般情况下php是不需要定义变量的,但如果服务器什么都报错的,就会出现错误,所以服务器上都是应该屏蔽这种错误的
PHP默认配置会报这个错误,我的PHP版本是5.2.13,存在这个问题:
Notice: Undefined variable
这就是将警告在页面上打印出来,虽然这是有利于暴露问题,但实现使用中会存在很多问题。
需要设置显示错误级别,来解决问题。
网络上的通用解决办法是修改php.ini的配置:
解决方法:
1) error_reporting设置:
找到error_reporting = E_ALL
修改为error_reporting = E_ALL & ~E_NOTICE
2) register_globals设置:
找到register_globals = Off
修改为register_globals = On
我发现在php代码中直接使用
error_reporting(E_ALL & ~E_NOTICE);
可以解决这个问题。
以下是补充:
Notice: Undefined variable: email in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
Notice: Undefined variable: subject in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
Notice: Undefined variable: comment in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
........
其实以上就是未定义变量,我们就直接判断变量的代码导致。
本来php是不需要定义变量的,但是出现这种情况应该怎么办呢?
只要在C:\WINDOWS找出php.ini
的
在php.ini中的302行 error_reporting = E_ALL
修改成
error_reporting = E_ALL & ~E_NOTICE
再重启apache2.2就行了
解决方法:修改php.ini
将: error_reporting = E_ALL
修改为:error_reporting = E_ALL & ~E_NOTICE
如果什么错误都不想让显示,直接修改:
display_errors = Off
如果你没有php.ini的修改权限,可在php头部加入
ini_set("error_reporting","E_ALL & ~E_NOTICE");
即可
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。