当我在没有上课时使用mysqli时,它就可以了:
的index.php
require_once(dirname(__FILE__) . '/config.php');
$mysqli = new mysqli($hostname, $username, $password, $dbname);
$queryText = "SELECT * FROM User";
if($query = $mysqli->query($queryText)) {
$results = $query->fetch_array();
echo $results['userId'];
} else {
echo "Error ";
echo $mysqli->errno . " " . $this->mysqli->error;
}
?>
但是当我开始在课堂上使用mysqli时出错了。 connectDB没有给出任何错误,所以我连接到DB。但是当尝试进行任何查询时,它会给我“没有数据库选择错误” index.php的结果是:错误1046未选择数据库
的index.php
<?php
require_once(dirname(__FILE__) . '/banana.php');
$banana = new Banana(1);
if ($banana->connectDB()) {
$banana->doQuery();
}
?>
banana.php
<?php
require_once(dirname(__FILE__) . '/config.php');
class Banana {
private $mysqli, $userId, $query;
function __construct($userId) {
$this->userId = $userId;
}
function __destruct() {
$this->mysqli->close();
}
public function connectDB() { // Подключение к БД
$this->mysqli = new mysqli($hostname, $username, $password, $dbname);
if ($this->mysqli->connect_errno) {
echo "Error (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error;
return false;
}
return true;
}
public function doQuery() {
$queryText = "SELECT * FROM User";
if($this->query = $this->mysqli->query($queryText)) {
$results = $query->fetch_array();
echo $results['userId'];
} else {
echo "Error ";
echo $this->mysqli->errno . " " . $this->mysqli->error;
}
}
?>
所以非常令人沮丧。我在php大约2个星期,但几天都找不到答案。我猜答案很明显,但我看不出来。 感谢您的时间和耐心。
答案 0 :(得分:0)
看起来你是一个副本,并且会粘贴受害者。在doQuery()中更改:
if($this->query = $this->mysqli->query($queryText)) {
$results = $query->fetch_array();
要:
if($this->query = $this->mysqli->query($queryText)) {
$results = $this->query->fetch_array();
答案 1 :(得分:0)
运行脚本时遇到的第一个问题是:
public function connectDB() { // Подключение к БД
$this->mysqli = new mysqli($hostname, $username, $password, $dbname);
请注意,在函数调用中使用的所有4个变量($hostname
等)在方法范围内都是未定义的。
有几种方法可以解决这个问题:
public function connectDB($hostname, ...
我会推荐前两个中的一个,绝对不是最后一个。
您可以在php手册中阅读有关variable scope。
的更多信息