【问题标题】:PHP/MySQL object-oriented mysqli will not connectPHP/MySQL 面向对象的 mysqli 不会连接
【发布时间】:2017-11-27 09:01:36
【问题描述】:

我这里有一个相当简单的脚本,我无法开始工作:

<?php
    $host='localhost';
    $user='root';
    $passwd='password';
    $db='cherry_pie';

    echo 'Accessing database...<br/>';
    $mysql_conn = new mysqli($host, $user, $passwd, $db);
    if($mysql_conn->connect_error) die($mysql_conn->connect_error);
?>

我浏览器中的结果很简单:

正在访问数据库...

另外,转置后网页没有变化

if($mysql_conn->connect_error) die($mysql_conn->connect_error);

print_r($mysql_conn);

这让我相信 $mysql_conn 永远不会被创建。


我目前正在运行 ubuntu 16.04,并且已经运行

sudo apt install php-mysql
sudo apt install mysql-server
sudo apt install mysql-client

此外,我已经通过 shell 运行了 mysql,并且可以验证数据库 'cherry_pie' 确实存在。

显然我的 apache2 服务器已启动并正在运行,并且我已经有其他可以正常运行的 html 文档和 php 脚本。

我已经花了几个小时搜索 php 和 mysql 文档,并且我参考了该站点上的其他几篇帖子都无济于事,因此我们将不胜感激。


编辑

我也尝试过使用 mysqli_connect(),但没有成功。

这是我的错误日志必须说的:

[Fri Jun 23 13:10:38.214070 2017] [:error] [pid 12584] [client 127.0.0.1:56418] PHP 致命错误:未捕获的错误:在 /var/www/html 中找不到类“mysqli” /php_test.php:8\n堆栈跟踪:\n#0 {main}\n 在第 8 行的 /var/www/html/php_test.php 中抛出,引用者:http://localhost/

【问题讨论】:

  • 您检查过您的 PHP 错误日志吗?您在这一行缺少分号$mysql_conn = new mysqli($host, $user, $passwd, $db)
  • $mysql_conn = new mysqli($host, $user, $passwd, $db),这段代码最后是否包含分号?
  • 它确实有一个分号,那只是一个错误的复制。
  • 尝试添加一些花括号...if ($mysqli-&gt;connect_error) { die('Connect Error: ' . $mysqli-&gt;connect_error); }

标签: php mysql mysqli


【解决方案1】:

您的症状表明您的 MySQLi 库未由您当前的 PHP 构建加载。

编辑

MySQL IS 加载时,您的mysqli_ 模块 加载。所以请看上面的链接。

【讨论】:

  • 您先生是我的英雄。从今天早上 7 点开始,我一直在努力解决这个问题。我现在已经加载了 MySQLi 和正确的 PHP 错误报告。非常感谢!
  • @AldenB 很高兴为您提供帮助,请经常检查您的错误日志,它们非常有用!
  • 老实说,我不知道我的 PHP/MySQL 错误会出现在那里;是的,它们非常有用!
【解决方案2】:

你拼错了 $mysql_conn

    //Replace
        if($mysql_conn->connect_error) die(%mysql_conn->connect_error);
    //With
        if($mysql_conn->connect_error) die($mysql_conn->connect_error);

//He edited the post and corrected his spelling mistakes disregard this suggestion.

【讨论】:

  • 那是一个错误的副本,我的实际代码有'$'。对此我深表歉意。
  • 你试过 echo (($mysql_conn->connect_error) ? "" : die($mysql_conn->connect_error));
【解决方案3】:

编辑

如果你正在创建一个新的mysqli 连接对象,你必须遵守它的规则:

if($mysqli_conn->error) die($mysqli_conn->error);

【讨论】:

  • 已编辑问题的错误日志明确指出mysqli 类不存在,因此与遵循编码约定无关。
  • 这是需要改变的地方。但提醒他,这是正确的。所以我建议你@AldenB 使用这种方式进行连接和验证:$mysql_conn = new mysqli($host, $user, $passwd, $db) or die('Error connecting'); ...它很简单,它总是返回唯一的错误消息。
猜你喜欢
  • 2017-06-04
  • 2023-04-09
  • 1970-01-01
  • 2011-02-27
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多