【发布时间】:2017-09-22 22:39:47
【问题描述】:
我真的希望有人可以帮助我弄清楚我缺少什么。我已将我的安装从 PHP 5.6 升级到 7.0,这迫使我从 Mysql 更新到 Mysqli,这由于某种原因破坏了我的设置。
我研究并遵循了本指南“在其他课程中使用 MySQLi”:Using MySQLi in other classes
我写的是最后的手段,也看过其他网站,但似乎问题出在其他地方。
首先我有一个数据库类:
private $serverName = "localhost";
private $userName = "DBUserName";
private $pass = "UserPassword";
private $database = "SelectedDB";
public $conn;
public function __construct(){
$this->conn = new mysqli($this->serverName, $this->userName,$this->pass,$this->database);
}
然后我有一个 API 类,我想访问这个连接,看起来像
require_once 'Database.php';
class MyAPI{
private $db;
public function __construct($request_uri, $postData, $origin) {
$this->db = new Database();
}
最后我尝试从一个函数中调用它:
$getUserResult = mysqli_query( $this->db->conn, $getUserQry);
每当我调用 $this->db->conn 时,我都会收到内部服务器错误 500
如果我在 MyAPI 类中创建数据库连接,就不会出现我觉得奇怪的问题。
希望有人能指点我一个方向。
更新: 我更正了脚本中的拼写错误,现在我得到了 200,但查询 mysqli_query 中的值仍然为空。
如果我创建 $dbtest = new database();并使用它来代替它工作正常。有没有办法让它在引用 $db 的构造函数中工作?
【问题讨论】:
-
“500 错误”表示“您的 PHP 出现问题”表示“检查您的
error.log文件”或您的服务器转储错误的任何地方。 -
private $db;应该是在类定义中 -
始终在开发和测试代码时,位于脚本顶部
error_reporting(E_ALL); ini_set('display_errors', 1); -
私有 $db;只是放错地方了,在 PHP 中是正确的。 @tadman 我会立即检查 error.log 给 Michael Berkowski,我已经在脚本中为将来设置好了
-
我没有在 php.ini 中设置地方 error_log 但我现在创建了一个,然后我会报告!