如何在 Mac OS X Snow Leopard 上启用 mysqli?

Posted

技术标签:

【中文标题】如何在 Mac OS X Snow Leopard 上启用 mysqli?【英文标题】:How do I enable mysqli on Mac OS X Snow Leopard? 【发布时间】:2011-10-26 15:29:20 【问题描述】:

我正在尝试在 Mac OS X 上启用 mysqli。我正在使用 MAMP,我已经尝试过 XAMPP(我对任何一个都开放),但是当我打开 php.ini 文件并搜索包含单词“mysqli”的任何内容时什么也没找到,当我尝试运行包含任何 mysqli 代码的 PHP 脚本时,什么也没有发生:没有输出错误,脚本只是无法执行。

当我尝试连接时

$dbh = new mysqli("localhost","root","root");

然后我转储它输出的变量$dbh

object(mysqli)#1 (17)  ["affected_rows"]=> int(0) ["client_info"]=> string(5) "5.5.9" ["client_version"]=> int(50509) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["field_count"]=> int(0) ["host_info"]=> string(25) "Localhost via UNIX socket" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(5) "5.5.9" ["server_version"]=> int(50509) ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(12) ["warning_count"]=> int(0) 

这是我试过的代码:

$dbh = new mysqli("localhost","root","root");
$dbh->select_db("php");
$dbh->query("SELECT * FROM test");
$count = $dbh->num_rows;
var_dump($count);

输出是

NULL

【问题讨论】:

你用的是什么版本的php、mam、xampp? (也检查 phpinfo) 5.3.6 ,我的印象是它是用那个版本的 php 编译的,当我在显示 phpinfo() 时搜索“mysqli”时,它表明 mysqli 已启用。 那么会不会有什么东西导致这些脚本无法运行,它们似乎没有产生任何错误消息,但之后没有运行任何 php 脚本。 可以发一个失败的小脚本吗? 我什至无法连接例如:$dbh = new mysqli("localhost","root","root","php");之后不会运行任何 php 脚本,如果我尝试只查询数据库,则什么也没有发生,什么也没有显示。请检查编辑,感谢您的帮助和坚持 【参考方案1】:

如果仍然无法连接:

尝试使用主机名127.0.0.1 而不是localhost

除非主机是 %,否则 Mysql 不会让我与 localhost 连接(我知道这是一个 hack)

我还不知道原因, 但我会尽快更新我的答案。

【讨论】:

【参考方案2】:

确保 mysqli 已启用:

将以下内容写入您的 web 目录中的 php 文件(我使用的是原生 php,所以我将它放在 /Library/WebServer/Documents/ 中):

<?php phpinfo(); ?>

然后检查“mysqli”这个词的输出

【讨论】:

你在那个目录里放了什么? OSX原生webserver使用apache,DocumentRoot设置为/Library/WebServer/Documents 是的,它输出mysqli已启用,但脚本无法运行。【参考方案3】:

您必须将结果存储到 MySQLi_Result 类中。否则,您可以使用affected_rows 变量来显示类似的效果。

$result = $dbh->query("SELECT * FROM test");
$count = $result->num_rows;
$count = $dbh->affected_rows;

【讨论】:

这不起作用,我似乎什么都做不了,正常的 mysql 查询工作,但 mysqli 和 mysqli 准备好的语句不起作用。 有趣。我已经在我的 Mac 上进行了测试,它可以正常工作(默认 PHP/Apache。我已经安装了 MySQL)。看看你的mysql.sock在php.ini中配置是否正确。 说是启用了,应该怎么配置? mysqli.default_socket 查看文件系统中是否存在socket文件。

以上是关于如何在 Mac OS X Snow Leopard 上启用 mysqli?的主要内容,如果未能解决你的问题,请参考以下文章

在 10.6 (Snow Leopard) 之后以编程方式设置 Mac OS X 音量

iPhone SDK 4 仅适用于 Mac OS X Snow Leopard?

Mac OS X Snow Leopard 上的 MOD_WSGI 困难

Mac OS X Snow Leopard 的默认 /etc/sysctl.conf 设置?

C 程序在 Mac OS X Snow Leopard 上执行磁盘 I/O 时卡在不间断等待

Ruby:mysql2-Gem 不工作(Mac OS X Snow Leopard,Ruby 1.9.2)