景初

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

·连接问题。在PHP使用MySQL连接函数,但是无法打开连接。通常会有两种原因导致这种情况。一是MySQL本身的问题,比如MySQL服务没有启动,此时PHP提示的错误信息类似于:Warning MySQL Connection Failed Cand't connect to MySQL server on 'localhost'(10061)。二是PHP不支持MySQL,此时PHP提示信息类似于:Fatal error Call to undefined function mysql_connect()。对于第一种情况,可以检查MySQL是否已经启动,对于第二种情况,可以通过函数phpinfo查看目前PHP支持的模块,看是否支持MySQL,载入MySQL的扩展模块即可。

·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程序时,和数据库有关的每个语句应该有or die()子句,该子句最好包含丰富的错误信息,如由函数mysql_error()生成的信息,原始的SQL语句等,这样就可以快速定位错误源头,及早诊断、解决程序问题所在。


版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2014-05-03 11:34  景初  阅读(187)  评论(0编辑  收藏  举报