我真的希望有人可以帮助我找出我所缺少的东西。我已将我的安装从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的值仍然是null。
如果我创建$ dbtest = new database();并使用它而不是它工作正常。有没有办法让它在构造函数内部工作,引用$ db?
答案 0 :(得分:0)
database.php中:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8');
myapi.php
<?php
class MyAPI
{
protected $db;
public function __construct($db, $request_uri, $postData, $origin)
{
$this->db = $db;
}
public function getUser()
{
$getUserQry = "...";
$res = $this->db->query($getUserQry);
}
}
app.php
<?php
require_once 'Database.php';
require_once 'myapi.php';
$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser();