如何用PHP PDO OOP获取当日数据?代码无输出求协助
解决PHP PDO + Axios获取今日交易数据无显示的问题
你现在遇到的核心问题是想拉取今日日期的交易数据,但页面完全没内容,咱们来一步步拆解代码里的问题,然后修正:
一、代码里的关键错误点
SQL语句硬编码+参数绑定完全不匹配
你当前的SQL用了硬编码的%2019-05-19%,而且SQL里根本没用到你后面绑定的:transaction_id、:beneficiary_id、:user_id这些参数,反而需要的今日日期参数没在SQL里正确使用,这直接导致查询逻辑完全错误。PDO参数绑定冗余且无意义
execute()里绑定的变量$transaction_id、$beneficiary_id、$user_id甚至都没定义,这会触发PHP错误,只是可能你没开启错误提示没看到。日期匹配方式不合理
如果datetime字段是datetime类型,用LIKE模糊匹配日期不是最优解,用DATE()函数提取日期做精准匹配更可靠。
二、修正后的完整代码
1. PHP Transaction类方法(修正拼写+逻辑)
// 先修正函数名拼写:retreive → retrieve public function retrieveDateToday() { $transaction_date = date("Y-m-d"); // 用DATE()函数提取datetime字段的日期部分,和今日日期精准匹配 $sql = "SELECT * FROM tbl_transaction WHERE DATE(datetime) = :transaction_date"; $stmt = $this->connection->prepare($sql); // 只绑定需要的日期参数,去掉冗余的无效绑定 $stmt->execute([ ":transaction_date" => $transaction_date ]); // 指定返回关联数组,转JSON更友好 return $stmt->fetchAll(PDO::FETCH_ASSOC); }
2. VueJS方法(增加错误捕获+调试日志)
retrieveReturnMedicine : function() { const vm = this; axios({ method : "GET", url : this.urlRoot + "gulod/retrieve_date_today.php" }).then(function (response){ vm.dateToday = response.data; // 打印具体返回数据,方便排查是否有数据 console.log("获取到的今日交易数据:", response.data); }).catch(function(error) { // 新增错误捕获,查看请求是否失败 console.error("请求出错:", error); }); }
3. PHP入口文件(增加错误提示+JSON响应头)
<?php include '../../private/initialize.php'; // 开启错误显示(生产环境记得关闭),方便调试 error_reporting(E_ALL); ini_set('display_errors', 1); $transaction = new Transaction(); // 明确设置响应为JSON格式 header('Content-Type: application/json'); echo json_encode($transaction->retrieveDateToday());
三、调试建议
- 直接在浏览器地址栏访问
retrieve_date_today.php的完整URL,查看返回的JSON数据是否正常,有没有报错信息。 - 打开浏览器控制台的「Network」面板,查看Axios请求的状态码(正常应该是200),以及响应内容是否为空。
- 确认
tbl_transaction表的datetime字段确实存在今日日期的交易数据。
内容的提问来源于stack exchange,提问作者Bayanihan 4
相关产品推荐
相关产品推荐

