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

标签 php mysql mysqli timestamp

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

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

如何根据我的代码在时间戳上使用绑定(bind)参数?

我尝试了以下代码,但我在 POSTMAN 上不断收到错误。 例如变量数量与参数数量不匹配

这是我在 Postman 上用于测试的日期 1 和日期 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;
    }

最佳答案

您需要使用占位符。 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);

关于php - 如何将bind_params用于时间戳数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59342672/

相关文章:

php - PHP插入带引号的mysqli

mysql - 从 MySQL 表的特定行中检索值

mysql - Rails 4.1 - 无需类型转换即可写入 MySQL 数据库

php - SQL将2列分成多行然后全部加起来

php - mysql where 语句中的when chinese word

mysql - 如何根据日期从两个表SQL中提取数据

php - 当我打印多维数组时,数组堆叠起来

php - 为什么 MySQL 语句被忽略?

PHP MYSQL 模块未在 Amazon EC2 Bitnami AMI 中加载

php - 如何在仪表板的 wordpress 菜单中添加 <a> id?