首页 > 解决方案 > SELECT 命令的 phpMyAdmin DATE 变量 - 致命错误:未捕获的 ArgumentCountError

问题描述

我是新来的,我学习 PHP 和 SQL 连接。我想从 SQL 数据库中列出未保留的房间号。我创建了 2 张桌子(房间和预订)并填写了一些示例。

步骤1

如果我将直接 DATE 用于“结束预订” DATE("2019-03-11") 这样的工作效果很好并列出了房间号

function reserv3()
{
    include "config.php";
    $html = "";
    $sql = 'SELECT roomnr , reserv_start FROM rooms LEFT OUTER JOIN reservation ON reservation.room_id = rooms.room_id AND DATE(reservation.reserv_start)  >= DATE("2019-03-11")';
    $result = mysqli_query($conn, $sql);
    while( $sor = mysqli_fetch_array($result) )
        $html .= "<DIV>".$sor['roomnr'].", ".$sor['reserv_start']."</DIV>";
    return $html;
}

第2步

我想将固定的 DATE("2019-03-11") 替换为变量。

$today = DATE("2019-03-11");
function reserv3($today)
{
    include "config.php";
    $html = "";
    $sql = 'SELECT roomnr , reserv_start FROM rooms LEFT OUTER JOIN reservation ON reservation.room_id = rooms.room_id AND DATE(reservation.reserv_start)  >= '.$today;     
    $result = mysqli_query($conn, $sql);
    while( $sor = mysqli_fetch_array($result) )
        $html .= "<DIV>".$sor['roomnr'].", ".$sor['reserv_start']."</DIV>";
    return $html;
}

我在第 2 步中有致命错误致命错误:未捕获的 ArgumentCountError:函数 reserv3() 的参数太少,传入的 0

你能帮我怎么把变量放到这个命令中吗?谢谢

标签: phpsql

解决方案


你的代码有问题。PHP date() 生成日期。如果您想要当前日期,请为日期和日期写入日期('Ymd')和日期('Ymd H:i:s)'作为日期和时间。在 mysql 中,如果字段是日期类型,则不必使用 mysql date() 函数进行比较。只有当它是 datetime 类型时,才使用 date() 函数来提取日期。

<?php
include "config.php";

$today = DATE('Y-m-d');

function reserv3($today)
{
    global $conn;

    $sql = 'SELECT t1.roomnr , t2.reserv_end FROM reservation as t2 LEFT JOIN rooms as t1 ON t2.room_id = 
               t1.room_id where t2.reserv_end <= '.$today;     
    $result = mysqli_query($conn, $sql);

    if(mysqli_num_rows($result)>0){
     // do something
    }

}

推荐阅读