PHP网页编程之关于准确了解PHP的毛病信息的切磋
学习如何将PHP与HTML结合起来完成简单动态页面毛病 简述:咱们编写法式时,不管如何当心慎重,出错老是在所不免的。这些毛病凡是会利诱PHP编译器。假如开辟人员没法懂得编译器报错信息的寄义,那末这些毛病信息不但毫无用途,还会经常让人感应懊丧。咱们编写法式时,不管如何当心慎重,出错老是在所不免的。这些毛病凡是会利诱PHP编译器。假如开辟人员没法懂得编译器报错信息的寄义,那末这些毛病信息不但毫无用途,还会经常让人感应懊丧。
编译PHP剧本时,PHP编译器会尽其所能呈报它碰到的第一个成绩。如许就发生一个成绩:只要当毛病呈现时,PHP才干将它辨认出来(本文前面对此成绩停止了具体描写)。恰是因为这个原因,编译器指出失足的那行,从外表上看来能够语法准确无误,或多是基本就不存在的一行!
更好地舆解毛病信息可以大小节省肯定并更正毛病内容所消费的工夫。因而,在本文中,我将勉力说明多种分歧类型的PHP报错信息,和在开辟过程当中若何准确了解各类报错信息的寄义。
本文中所讲述的内容与您所使用的PHP的版本有关,由于本文所描写的各类毛病其实不限制于某一特别版本的特定毛病。别的咱们假定您是一名低级或中级法式员,并已从事编程任务有半年或一年的工夫。编译器的任务体例
要弄清晰编译器为何会呈报某一行上存在毛病,起首必需明白编译器解析PHP代码的机制。我其实不盘算在本文中对此停止具体论说,然而,咱们将会会商一些更容易于激发毛病的复杂概念。
变量声明
假如在一条语句中声明一个变量,详细体例以下所示:
$variable = 'value';
编译器起首求出语句右半局部的值(即等号右侧的一切内容)。在一些编程书本中,将此暗示为语句的 RHS (右半局部)。恰好恰是语句的这一局部经常会激发毛病。假如利用的语法不准确,就会呈现解析毛病。
解析毛病
Parse error:解析毛病,unexpected T_WHILE in c:\program files\apache group\apache\htdocs\script.php on line 19
每次肯定了前一毛病时,解析毛病一个接一个地不休呈现。由于PHP在第一个解析毛病以后就中断履行剧本,调试并改正这一系列的毛病常常会让人感觉出格腻烦。
并且,解析毛病具有很少的信息,几近不呈报毛病地点的行号。详细缘由就是当呈现毛病时,编译器剖断好几行的语法看起来应当是无效的,直至碰到有效的语法,最能够的情况就是表达式中利用了预界说的字词,例如;
while = 10; // Bad ? while 就是一个预界说字词,不克不及分派给一个值
预界说的字词包含 while、function等,假如PHP利用 uses to evaluate your code. 您不克不及利用这些预界说字词来定名变量,并且假如您非要如许做的话,PHP就会报出更多的毛病,这是您没法忍耐。
关于这个成绩,上面的示例能够会对您有所匡助。请征询浏览一下上面所示的PHP 代码:
<?php $b = "somevalue" if($b == "somevalue"){ print "Hello world!"; } ?>
毛病位于"$b ="一行(在语句的末尾短少分号),所以毛病应当是"解析毛病:第3行短少分号"对吧?而不该该根据解析器剖断的:
Parse error: parse error, unexpected T_IF in c:\program files\apachegroup\apache\htdocs\ereg2.php on line 4
在第4行,if() 语句的语法是准确的。那末,编译器是被甚么给弄懵懂了呢?线索就是"unexpected T_IF" 局部。呈现 "unexpected T_???"毛病时,它所暗示的寄义为:编译器发明在预界说字不该该呈现的地位呈现。T_IF 代表 if(), T_WHILE 代表 while(), T_FOR 代表 for()等。
值得光荣的是,一些毛病的缘由也很复杂:
语句没有利用分号(;)停止,好比下面的示例。字符串中短少引号。
其他一些罕见的毛病
我见过的最多见的毛病就是,当没有利用大括号( } )停止一个函数或一个轮回时呈现的毛病,这极可能是最多见,最使人烦的毛病。详细代码以下:
function UselessFunction() { for($i < 0; $i < 10; $i++){ }
将发生以下毛病:
Parse error: parse error, unexpected $ in c:\program files\apache group\apache\htdocs\ereg2.php on line 9
因为函数 UselessFunction 没有利用大括号( } )来停止,PHP编译器不休查找暗示停止的大括号直至抵达文件末尾为止。由于编译器未找到一个婚配的大括号,就会呈报文件末尾处有毛病。
假如准确地反应了代码的条理布局,毛病信息就会变得十分分明。假如没有标明朝码的条理布局,那末最初要想查清晰究竟健忘了甚么也会变得几近是不成能的。所以,请记住,必定要标明朝码的条理布局。Tab键可以很轻易地完成这一点。对后续的开辟人员来讲,掌控代码框架并对其停止修正也会更轻易一些。
MySQL 毛病
另外一极为使人厌恶的毛病信息就是最多见的MySQL毛病,这经常使 PHP老手感应很是头疼:
Warning: Supplied argument is not a valid MySQL result resource in...
下面所呈报有错的一行多是:
while($row = mysql_fetch_array($result)) {
参数 $result并非一个无效的资本。在英语中它暗示由于查询掉败,将没法处置mysql_fetch_array。任一查询的语法有效(您应当将查询复制-粘贴到MySQL 掌握台参考来停止测试),或与数据库的毗连掉败(这类情形下您应当再次反省用户名和口令等)。
避免毛病产生
第一步,智能代码器可接纳以下几步来消弭以下毛病呈现:
・ 在每条语句的末尾处,不用思索添加分号――这应当成为一种习气。
・ 老是要尽量标明朝码的条理布局,这可使您可以检查是不是健忘在if 挪用或函数末尾等地位添加大括号。
・ 请利用可凸起显示语法的编纂器(如 HTML-Kit)。有了这类编纂器的帮助,您就可以肯定是不是健忘了添加引号,是不是短少分号等。
结论
本文咱们对PHP编译器可报出的一些看起来能够没有甚么意义的毛病有了必定的懂得。咱们需求将所学的常识使用到若何防止毛病和毛病呈现时若何改正毛病。调试是一个开辟人员一切任务中的最主要的局部之一。进步调试效力可大大加速全部任务的进度,延长完成一项工程所需消费的工夫,同时还可以分明加重代码掉败所带来的精力压力
只要实现最基本的功能就可以了 就是可以添加留言 然后可以显示留言,然后加入管理功能 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。 建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。 首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 写的比较杂,因为我也是个新手,不当至于大家多多指正。 个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。 基础有没有对学习php没有太大区别,关键是兴趣。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 当然这种网站的会员费就几十块钱。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
页:
[1]