【发布时间】:2023-03-29 01:24:01
【问题描述】:
视图文件
<?php
require('OrderModel.php');
session_start();
if(!isset($_SESSION['orderModel'])){
$newModel = new OrderModel();
$_SESSION['orderModel'] = $newModel;
} else{
$newModel = $_SESSION['orderModel'];
}
$newModel->addToBasket(1, 30);
echo $newModel->getItemName($newModel->basket[0][0]);
?>
OrderModel 文件(简化)
class OrderModel{
public $basket;
public $orderDate;
public $orderTime;
public $sent;
public $dbc;
public $customerOrderID;
public function __construct()
{
$this->dbc = require_once('../../db/config.php');
$this->basket = [];
}
public function addToBasket($itemNumber, $itemQuantity){
array_push($this->basket, [$itemNumber, $itemQuantity]);
}
public function getItemName($itemNum){
$query = "SELECT ItemName FROM item WHERE ItemID = $itemNum;";
$r = mysqli_query($this->dbc, $query); //Line 31
if($r){
return mysqli_fetch_row($r)[0];
}else{
echo mysqli_error($this->dbc); //Line 35
}
}
我可以确认 config.php 文件肯定配置正确并且正在与数据库通信。无论如何,代码是:
<?php
define ('username', 'root');
define ('password', 'root');
define ('server', '127.0.0.1');
define ('database', 'alberto');
$dbc = mysqli_connect(server, username, password, database) OR DIE ('Could not connect to MySQL: ' . mysqli_connect_error());
mysqli_set_charset($dbc, 'utf8');
return $dbc;
?>
我从视图文件中收到以下错误消息:
警告:mysqli_query():Could't fetch mysqli in D:\UniServerZ\www\alberto\app\models\OrderModel.php on line 31
警告:mysqli_error():Could't fetch mysqli in D:\UniServerZ\www\alberto\app\models\OrderModel.php on line 35
我怀疑错误与会话有关,但我似乎无法从目前发布的主题中找到任何答案。
请多多指教。谢谢。
【问题讨论】:
-
var_dump($this->dbc)显示什么? -
该错误意味着
$this->dbc不是一个有效的mysqli对象。 -
你在脚本的其他地方有
require_once('../../db/config.php')吗?由于您使用require_once,因此只会执行第一个。使用require而不是require_once。