猿问

您如何将 bind_params 用于时间戳数据?

我正在尝试在两个时间戳之间获取数据库上的数据,并且我看到了许多使用 BETWEEN 的帖子。但是我无法克服与我的 bindparams 相关的错误,这就是为什么我无法测试我在另一篇文章中看到的代码的原因。


关于我的代码的第一部分,我只是认为 $date1 和 $date2 上的值是一个字符串,我想也许我需要将它转换为 MySQL 时间戳格式,所以我使用了以下代码。


如何根据我的代码在时间戳上使用 bindparams?


我尝试了以下代码,但在 POSTMAN 上不断收到错误消息。比如变量个数和参数个数不匹配


这是我在 Postman 上用于测试的 date1 和 date 2 的样本值


       $date1 is  2019-12-13 00:00:00

       $date2 is  2019-12-15 00:00:00

DbOperation.php


    //view cart product sales in cartData via date

    public function viewCartDatabyDate($date1, $date2){

        $timestamp1 = strtotime($date1);

        $timestamp2 = strtotime($date2);

        $newDate1=date("Y-m-d H:i:s", $timestamp1);

        $newDate2=date("Y-m-d H:i:s", $timestamp2);


        $stmt = $this->con->prepare("SELECT * FROM cart_data WHERE created BETWEEN '$newDate1' AND '$newDate2' ORDER BY created");

        //$stmt->bind_param("s", $newDate1);

        //$stmt->bind_param("s", $newDate2);

        $stmt->bind_param("s", $created);

        $result = $stmt->get_result();

        while($data = $result->fetch_assoc()){

            $cartdata[]=$data;

        }

        return $cartdata;

    }


有只小跳蛙
浏览 101回答 1
1回答

暮色呼如

您需要使用占位符。SQL 中的问号表示这是附加变量的地方。$stmt = $this->con->prepare("SELECT * FROM cart_data WHERE created BETWEEN ? AND ? ORDER BY created");$stmt->bind_param("ss", $newDate1, $newDate2);$result = $stmt->get_result();$certdata = $result->fetch_all(MYSQLI_ASSOC);
随时随地看视频慕课网APP
我要回答