当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

13.5PHP操作MySQL常见错误信息及分析

9/17/2020 9:26:54 PM 人评论

13.5PHP操作MySQL常见错误信息及分析

13.5 PHP操作MySQL常见错误信息及分析

PHP操作数据库是使用PHP开发Web程序的基本部分,也是最重要的部分。几乎所有用PHP开发的Web程序或应用,都无一例外地需要操作数据库。因此,PHP程序中,对数据库操作部分的调试和错误排错,就显得非常重要。本节将介绍几种在PHP程序操作MySQL时比较常见的错误,以及对这些错误的分析,以期给读者在实际开发中作个参考。

❑连接问题。在PHP使用MySQL连接函数,但是无法打开连接。通常会有两种原因导致这种情况。一是MySQL本身的问题,比如MySQL服务没有启动,此时PHP提示的错误信息类似于:Warning MySQL Connection Failed Can't connect to MySQL server on'localhost'(10061)。二是PHP不支持MySQL,此时PHP提示的信息类似于:Fatal error Call to undefined function mysql_connect()。对于第一种情况,可以检查MySQL是否已经启动,对于第二种情况,可以通过函数phpinfo()(本书开始部分有介绍)查看目前PHP支持的模块,看是否支持MySQL。如果没有MySQL的相关描述信息,那么对于Windows用户,直接修改php.ini文件,载入MySQL的扩展模块即可,这一点在讲述安装PHP时已经介绍过。

❑MySQL用户名和密码问题。在PHP程序中配置了错误的MySQL的主机地址、用户名或密码,也会导致MySQL连接失败。这种情况只要在程序中使用正确主机地址、用户名和密码即可。

❑引号导致错误的SQL语句。PHP可以使用单引号的字符串,也可以使用双引号字符串。例如,$sql='select*from users where id=$id',因为PHP单引号字符串中的变量不会被求值,因此这段SQL语句将查询id=$id用户信息,这就会产生错误。如果使用$sql="select*from users where id=$id",这时双引号字符串中的变量$id会被求值为一个具体的数,这样才是一个正确的SQL语句。另外,当用户从Web页面提交来的数据中含有单引号或双引号时,如果程序将这些内容放在字符串中,势必导致引号使用的混乱,从而出现错误的SQL语句。对于这种情况,可以使用左斜杠转义文本中的引号。

❑错误的名称拼写。这里包括在PHP程序中拼写了错误的数据库名、表名或者字段名。这样可能就会让MySQL去查询一个不存在的表,从而导致错误发生。

MySQL会为每种错误设定一个编号,当由于程序的问题导致操作数据库出错,可以根据这些编号对应的错误含义来查找具体原因。下面列出了一些常见的MySQL错误代码及其对应的错误信息。

❑1022:关键字重复,更改记录失败。

❑1032:记录不存在。

❑1042:无效的主机名。

❑1044:当前用户没有访问数据库的权限。

❑1045:不能连接数据库,用户名或密码错误。

❑1048:字段不能为空。

❑1049:数据库不存在。

❑1050:数据表已存在。

❑1051:数据表不存在。

❑1054:字段不存在。

❑1065:无效的SQL语句,SQL语句为空。

❑1081:不能建立Socket连接。

❑1146:数据表不存在。

❑1149:SQL语句语法错误。

❑1177:打开数据表失败。

PHP程序操作MySQL数据库会经常遇到问题,有时会让开发人员感到莫名其妙。通常,引起数据库连接问题的最常见原因是,给连接函数提供了不正确的参数(主机名、用户名和密码),引起查询失败的最常见的原因是引号错误、未被设定的变量和拼写错误。一般情况下,在调试PHP程序时,和数据库有关的每个语句应该有or die()子句(就像本章的示例代码那样),该子句最好包含丰富的错误信息,如由函数mysql_error()生成的信息,原始的SQL语句等,这样就可以快速定位错误源头,及早诊断、解决程序问题所在。

相关教程

共有条评论 网友评论

验证码: 看不清楚?