不要乱写注释

为了体现自己的专业,在写代码的时候,我会尽量写注释。可是今天却被自己写的注释整整坑了6个小时。当php注释风格遭遇html注释风格的时候,我想很少有像我这样的逗逼掉进了陷阱吧。

坑的来源(注释风格迥异)

php注释风格: // 单行注释 ; /**/ 多行注释
html注释风格:<!-- -->

开始挖坑

今天我在写一个ajax异步请求的时候,主要是测试一段代码。

业务逻辑很简单: 入口页面填写用户名和密码,点击注册按钮,触发引入js文件中的ajax的异步请求,向远程数据库插入数据。

连接数据库连接部分还是一如既往写了一个类,还写了4行注释,现在来看,这样来连数据库绝对是菜鸟。由于这4行不在<?php ?>标签内,所以是html注释

<!--
    数据库类
    author:caijl
    date:2014/12/17;
-->
<?php
    class ConnectionMySQL{

        //主机
        private $host="localhost";

        //数据库用户
        private $name = "root";

        //数据库服务器密码

        private $password = "root";

        //数据库名称

        private $database = ""; 

        //连接

        private $conn ="";

        //构造函数

        function __construct($host, $name, $password, $database){
            $this->host = $host;
            $this->name = $name;
            $this->password = $password;
            $this->database = $database;
            $this->connect();
        }

        //连接函数
        function connect()
        {
            $this->conn = mysql_connect($this->host, $this->name, $this->password);
            mysql_select_db($this->database);
            mysql_query("set names utf8");
        }

        //处理函数
        function query($sql)
        {
            return mysql_query($sql);
        }
        //关闭连接
        function close()
        {
            mysql_close();
        }
        //获取连接
        function getDb()
        {
            return $this->conn;
        }
    }   
?>

在处理请求的文件中,我是这样处理来自入口页面的请求的

<?php
  require("conn.php");
  header('Content-type: text/html; charset=utf8');
  //$user_info = json_encode($_POST);
  $user_name = json_encode($_POST["name"]); 
  $user_pwd =  json_encode($_POST["pwd"]);
  $db = new ConnectionMySQL("192.168.25.108","root","123456","test");
  $sql = "insert into user_info(user_name, user_pwd) values($user_name, $user_pwd)";
  $result = $db->query($sql);
  echo json_encode($result);
?>

报错结果: object xmlHttprequest ,但是数据插入到数据库中了,相当纳闷。

爬出坑

为了解决这个问题,我用了echo,var_dump函数进行输出测试,但都石沉大海。不甘心就此结局。

搬来google浏览器自带调试工具,开始学习ajax调试。看到Jquery.Ajax之错误调试帮助信息,开始了 疯狂的调试之旅。在js文件中设置断点还不够,对错误信息进行全面分析。 Jquery.Ajax请求

单步调试一番后,错误详情为parseerror.难道是返回数据类型不是json,看下图 json数据错误

终于找到错误: Invalid Json

竟然还有我在数据库连接类中的注释信息?难道注释不起作用了?

脱离坑

原来是在类文件中,前四行是作为html注释,引入到处理请求的文件中,由于该段内容在php标签内,所以注释格式应该是/* */,看到此番注释,php当然不识别。

总结

之所以遇到坑,就是还太嫩了。不过收获的是:更加会利用google浏览器调试一些信息。