不要乱写注释
为了体现自己的专业,在写代码的时候,我会尽量写注释。可是今天却被自己写的注释整整坑了6个小时。当php注释风格遭遇html注释风格的时候,我想很少有像我这样的逗逼掉进了陷阱吧。
坑的来源(注释风格迥异)
php注释风格: // 单行注释 ; /**/ 多行注释
html注释风格:<!-- -->
开始挖坑
今天我在写一个ajax异步请求的时候,主要是测试一段代码。
业务逻辑很简单: 入口页面填写用户名和密码,点击注册按钮,触发引入js文件中的ajax的异步请求,向远程数据库插入数据。
连接数据库连接部分还是一如既往写了一个类,还写了4行注释,现在来看,这样来连数据库绝对是菜鸟。由于这4行不在<?php ?>标签内,所以是
<!--
数据库类
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文件中设置断点还不够,对错误信息进行全面分析。
单步调试一番后,错误详情为parseerror.难道是返回数据类型不是json,看下图
终于找到错误:
竟然还有我在数据库连接类中的注释信息?难道注释不起作用了?
脱离坑
原来是在类文件中,前四行是作为html注释,引入到处理请求的文件中,由于该段内容在php标签内,所以注释格式应该是/* */,看到此番注释,php当然不识别。
总结
之所以遇到坑,就是还太嫩了。不过收获的是:更加会利用google浏览器调试一些信息。