【问题标题】:How do I enable mysqli on Mac OS X Snow Leopard?如何在 Mac OS X Snow Leopard 上启用 mysqli?
【发布时间】: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 脚本,如果我尝试只查询数据库,则什么也没有发生,什么也没有显示。请检查编辑,感谢您的帮助和坚持

标签: php mysql mysqli xampp mamp


【解决方案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文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2010-12-12
    相关资源
    最近更新 更多