PHP在cmd中连接mysql

之前曾经尝试过在cmd中用php连接mysql数据库, 但是一直没成功. 我从此以为PHP在命令行不支持mysql数据库连接. 但有时候确实有这种需要. 这次再次用力尝试了一下, 终于成功.

如果出现undefined mysql_connect错误消息, 说明你的mysql扩展没有载入, 使用phpinfo即可看到, 最大的可能是你的php.ini没有加载.

Configuration File (php.ini) Path => C:\Windows
Loaded Configuration File => not loaded

此时只需要将一个ini文件拷贝到windows目录即可. 可以将Apache使用的ini文件拷贝进去, 拷贝后还要修改ini文件确保扩展的路径是对的. 注意ini文件中的extension_dir 和 extension=php_mysql.dll 是否正确.

这个问题一般都好解决, 但是还有一个非常隐蔽的问题也会导致无法连接mysql. 请注意phpinfo的输出中mysql条目下的一个参数:

Client API version => 5.1.50

注意比较Apache上面的phpinfo输出和命令行脚本的phpinfo输出, 如果这两个值不同, 也有可能导致无法连接. 而且这种错误不会有任何提示信息. 只会出现下面的对话框:

什么情况下会导致这个问题? 现在一般都是LAMP套件发行, PHP和MYSQL版本是对应的, 所以架设Web服务的时候, 连接mysql是没有问题的, 但是php命令行执行的时候所使用的不一定就是LAMP套件包中的php.exe. 特别是你先安装了一个php版本用来执行命令行脚本, 然后又安装了一个LAMP套件, 套件中的PHP版本可能和之前安装的PHP版本不一致. 查看关联到PHP文件的解析器使用ftype phpfile.

F:\tmp>ftype phpfile
phpfile=d:\php\php-5.2.10-Win32\php.exe  "%1" %*

如果不对应, 应该用ftype命令重新绑定解析器.