使用 PHP 操作数据库是 Web 开发的基本部分,也是最重要的部分。几乎所有使用 PHP 开发的 Web 程序或应用,都无一例外地需要操作数据库。因此 PHP 程序中,对数据库操作部分的调试和错误排错就显得非常重要。下面列举了一些在使用 PHP 操作 MySQL 时比较常见的错误以及对这些错误的分析,来给大家作个参考。
在使用了 PHP 中的 MySQL 连接函数,但是无法打开连接时,通常会有如下两种原因导致这种情况。
1) MySQL 本身问题,比如 MySQL 服务没有启动,此时 PHP 提示的错误信息类似于
2) PHP 不支持 MySQL,此时 PHP 提示的信息类似于
对于第一种情况,可以检查 MySQL 是否已经启动,对于第二种情况,可以通过打印 phpinfo() 函数,来查看目前 PHP 是否开启了 MySQL 模块,如果没有开启的话,直接在配置文件中开启即可。
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_connect、mysql_query、mysql_fetch_assoc 等等,但是如果使用的 MySQL 版本大于 4.1 的话,推荐使用 mysqli 扩展。另外,在 PHP5.5 以及之后的版本中 mysql 扩展(mysql_connect、mysql_query() 等一系列函数)将被弃用。
mysqli(MySQL 的加强版扩展)有以下几个优点:
MySQL 会为每种错误设定一个编号,当由于程序的问题导致操作数据库出错,可以根据这些编号对应的错误含义来查找具体原因。下面列出了一些 MySQL 中常见的错误代码及其对应的错误信息:
在 PHP 操作 MySQL 数据库时会经常遇到一些莫名其妙的问题,通常引起数据库连接问题的最常见原因是给连接函数提供了不正确的参数(主机名、用户名和密码),引起查询失败的最常见的原因是引号错误、未定义的变量和拼写错误。一般情况下,在调试 PHP 程序时,可以在数据库有关的语句后面添加一个 or die() 子句,并在子句中注明错误信息,这样就可以快速定位到错误发生的位置了。