【发布时间】:2021-12-03 07:15:06
【问题描述】:
function build_calendar($month, $year){
$mysqli = new mysqli('localhost', 'root', '', 'ems');
$stmt = $mysqli->prepare("SELECT * FROM bookings WHERE MONTH(event_date) = ? AND YEAR(event_date)=?");
$stmt->bind_param('ss', $month, $year);
$bookings = array();
if($stmt->execute()){
$result = $stmt->get_result();
if($result->num_rows>0){
while($row = $result->fetch_assoc()){
$bookings[] = $row['event_date'];
}
$stmt->close();
}
}
我写了这段代码,作为从我的数据库中获取预订日期并将它们显示在我的日历上的修复程序,但我还不是 OOP 人,我希望有这种程序格式的语法,我仍然能更好地理解.
我已经试过了
$connection = mysqli_connect('localhost', 'root', '', 'ems');
$query = "SELECT * FROM bookings WHERE MONTH(event_date) = ? AND YEAR(event_date)=?";
$get_dates = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($get_dates)){
$booked_dates[] = $row['event_date'];
}
但这会返回错误:
致命错误:未捕获的类型错误:mysqli_fetch_assoc():参数 #1 ($result) 必须是 mysqli_result 类型
【问题讨论】:
-
您的程序代码没有准备语句,请查看
mysqli_prepare,以便您可以正确复制 OO 代码。 -
我会借此机会学习 OOP 语法...
-
@NigelRen 我尝试使用 Php 文档来学习
mysqli_prepare,但是当我尝试按照文档中的步骤进行操作时,我感到更加困惑。 @ADyson 我想如果我想使用它,我必须学习 OOP 语法。我上周刚开始学习程序,直到课程结束后我才知道有不同的方法。感谢您的提示 -
I tried using the Php docs to learn the mysqli_prepare but I got confused more when I tried following the steps...在这种情况下,您实际上只需将 OOP 版本中的命令替换为手册中所示的每个命令的等效程序即可。你可以一行一行地做。但我不会打扰 - 从长远来看,OOP 更容易理解,并产生更易于维护的代码。值得努力去理解这一点。 -
如果你刚刚开始学习 PHP,那么你应该学习 PDO 而不是 mysqli。 PDO 更容易,更适合初学者。从这里开始phpdelusions.net/pdo & websitebeaver.com/…