开发者社区> 问答> 正文

PHP报错Notice: Undefined variable的问题

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'];?>&nbsp;&nbsp;<a href="edit.php?id=<?php echo $rs['id']?>">编辑</a> &nbsp;&nbsp;<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>

展开
收起
小旋风柴进 2016-03-06 14:29:48 3747 0
1 条回答
写回答
取消 提交回答
  • 在调试程序的时候,很多网上提供的源码都会出现 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");

      即可

    2019-07-17 18:54:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载