php开源嘛
首页 | English | MySql数据库 | Php编程 | 建站杂烩 | 系统服务器 | 资源共享 | 专题 | 才桀网 | 支持论坛
  当前位置:主页>MySql数据库>文章内容
PHP+MYSQL动态网页编程纠错指南……
来源:收集整理 作者:本站整理 发布时间:2008-03-21  

 当我们运行以上脚本时,将会看到由于程序没有返回任何数据而出现的错误提示。这里,我们为了更好的说明问题选择了一个非常直观的例子。在现实当中,有时问题并不会这么简单。相信大家都已经找到了出现问题的原因,那就是“print $Combined_Result;”中的变量名称“$Combined_Result”应当改为“$Combine_Result”。
事实上,脚本中任何一处出现的拼写错误都会导致同样的问题。如果用户怀疑自己的程序中有拼写错误的话,一个非常好的检查方法就是在变量的前后显示文字信息。例如:

   print “The Combined Result is: |”.$Combined_Result.“|”;

按照上述方法替换输出语句的脚本重新执行之后的结果如下:

   The Combined Result is: ||

 其中,在两个管道符号“|”之间没有任何内容。按照这种方法,我们就可以在程序中找到出现问题的变量。

下面,我们再举一个更加复杂的例子进行说明。

现在,很多网络应用都需要对用户的身份进行验证。一个最简单的实现脚本可以如下:

<?
 $Password=“Secret”;
 $Name=“admin”;
 function VerifyPassword ($UserPassword, $UserName){
  if ($Password=$UserPassword && $Name=$UserName){
   return 1;
  }
  else { return 0;}
 }
 if (VerifyPassword (“foo1ish”,“admin”)){
  print “The Password is correct”;
 }
 else {
  print “I’m sorry, the password is incorrect”;
 }
?>

虽然在上述脚本中调用VerifyPassword函数时输入的是错误的密码,但是程序运行之后仍然会产生如下结果:

   The Password is correct

  问题可能会出现在任何地方,下面就让我们使用排除法一一检查。首先,我们很难确定脚本最后的“if”条件语句是否正确。虽然看上去好象是没有问题,但是为了确保程序正确无误,我们不能放过任何一个环节。因此,我们将该条件语句注释掉,同时按照前面介绍的方法对VerifyPassword()函数进行输出。具体如下:

 

<?
 $Password=“Secret”;
 $Name=“admin”;
 function VerifyPassword ($UserPassword, $UserName){
  if ($Password=$UserPassword && $Name=$UserName){
   return 1;
  }
  else { return 0;}
 }
 print “The result of VerifyPassword() is:”;
 print VerifyPassword (“foo1ish”, “admin”);
 /*if (VerifyPassword (“foo1ish”, “admin”)){
  print “The Password is correct”;
 }
 else {
  print “I’m sorry, the password is incorrect”;
 }*/
?>

  因为我们使用了错误的密码,所以结果应当为0。但是程序运行之后,我们发现实际结果如下: phpma开源…

 

   The result of VerifyPassword() is: 1

  这样,我们就知道问题是出现在VerifyPassword()函数的身上。检查了一遍函数之后,我们怀疑问题可能出现在“if”语句中。所以我们屏蔽到VerifyPassword()函数中的条件语句,并进行如下输出:

 print “UserPassword => $UserPassword, Password => $Password,”;
 print “Password==UserPassword => ”.(int)($Password==$UserPassword).“<BR>”;
 print “UserName => $UserName, Name => $Name, ”;
 print “Name==UserName =>”.(int)($Name==$UserName).“<BR>”;

(说明:我们使用(int)($Password==$UserPassword)语句将比较结果转化为整数0或1)

程序修改之后的实际输出结果如下:

UserPassword => foo1ish, Password => , Password==UserPassword => 0
UserName => admin, Name => , Name==UserName => 1
I’m sorry, the password is incorrect

  这里,我们可以清楚的看出Password和Name两个变量都是空值,也就难怪判断语句不起作用了。

  那么为什么$Password为空值呢?我们在程序的开头部分就已经明确的对$Password变量进行了赋值,但是因为某种原其变量值无法带入到VerifyPassword()函数中。回想一下PHP语言关于变量作用域的规定,我们可以立刻找到出现问题的原因,那就是如果要想在函数中使用变量,必须将该变量声明为全局变量。知道了错误的根源之后,我们在VerifyPassword()函数的第一行加入以下语句,然后重新运行程序:

global $Password, $Name;

程序运行结果如下: phpma开源…

UserPassword => foo1ish, Password => Secret, Password==UserPassword => 0
UserName => admin, Name => admin, Name==UserName => 1
The Password is correct

  为什么?按理说我们应当得到密码不正确的错误提示。再一次仔细检查遍程序之后,终于发现原来我们把逻辑运算符“==”误用成“=”,这样就把$UserPassword变量的值赋给了$Password变量。把最后的这两处错误改正过来之后,完成的程序如下:

<?
 $Password=“Secret”;
 $Name=“admin”;
 function VerifyPassword ($UserPassword, $UserName){
  global $Password, $Name;
  if ($Password==$UserPassword && $Name==$UserName){
   return 1;
  }
  else { return 0;}
 }
 if (VerifyPassword (“foo1ish”, “admin”)){
  print “The Password is correct”;
 }
 else {
  print “I’m sorry, the password is incorrect”;
 }
?>

执行程序得到如下结果: phpma开源…

  I’m sorry, the password is incorrect.

输入正确密码重新运行时,得到以下结果:

  The Password is correct

这样,我们就成功的找到并解决了问题。希望大家能够从以上的介绍中领悟到查找错误时的一些方法和思路。

  关于数据库在WEB编程当中,数据库的作用已经越来越不容忽视。提到数据库,应当说PHP具有非常强大的数据库支持功能,从FileMaker到Oracle,几乎与所有的数据库系统都可以实现无缝连接。为了方便本文的讲解,我们将主要以MySQL为例进行说明。不过对于其它的数据库应用也同样适用。

  使用PHP进行数据库操作一般需要包括以下语句: phpma开源…

  <?
  $Host="localhost";
  $MySQL_UserName="root";
  $MySQL_UserPass="password";
  $MySQL_Database="db";
  $Query="SELECT * FROM domain";
  mysql_connect ($Host, $MySQL_UserName, $MySQL_UserPass);
  mysql_select_db ($MySQL_Database);
  $Result_ID=mysql_query ($Query);
  while ($Result=mysql_fetch_row($Result_ID)){
 print "------------------<BR>";
  print "$Result[0]<BR>";
  print "$Result[1]<BR>";
  print "$Result[2]<BR>";
  print "$Result[3]<BR>";
  print "-------------------<BR>";
  }?>

  基本步骤包括建立与MySQL数据库的连接,选择数据库操作对象,然后执行查询语句。对于在上述过程中出现的错误的提示信息一般来说都能够较为准确和详细的描述所出现的问题。例如,“Connection failed due to a bad username”错误报告就清楚的指出由于用户名错误而导致与数据库的连接失败。
(阅读次数:

共4页: 上一页 [1] [2] 3 [4] 下一页
上一篇:配置:iis与apache共用80端口方法集   下一篇:PHP画一个可以更换文字的按纽
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·用于SELECT和WHERE子句的SQL函数
·MySQL数据库下.frm .MYD .MYI损
·MySQL索引分析和优化
·怎么删除MySQL数据库中的重复数
·MySQL数据库中SQL查询语句精华
·MySQL数据导入与导出
·如何优化MySQL数据库性能
·MySQL查询优化之查询优化器
·如何导入导出*.sql文件到MySQL数
·怎么备份MySQL数据库
·MySQL数据导入导出方法与工具介
·MySQL索引分析和优化加速网站访
  相关文章
·在MySQL数据库中增添新用户...
·加快MySql速度、MySql的索引与优
·如何正确认识MySQL对服务器端光
·若MySQL数据库不允许从远程访问
·介绍:最简便的备份MySql数据库
·MySQL多表连接查询Left Join,Rig
·MySQL数据库管理的6种日志详解
·MySQL数据库接口的VC实现与应用.
·怎样才能编写出高质量高性能的My
·MySQL数据库的常出错代码列表汇
·MySQL数据库使用系列事例...
·MySQL数据库查询中的分页思路的

关于我们 | 本站声明 | 友情连接 | 诚邀加盟 | 网站地图
版权Power by DedeCms   技术支持QQ =>> 罗江游鱼   Jacking  后台登陆
Copyright @ 2007 公司地址:柳州市东环路268号 邮编:545006 电话:15920389818 桂ICP备07006725号