php - 如何更正 postgresql 数据库中 PDO php 的强制转换问题
问题描述
我直接在数据库中对以下查询进行了测试,效果很好:
UPDATE alertasdocumentos SET alert_disparada_diez = true
WHERE alert_activa = true AND ((alert_fecha - 10) = (current_date))
AND alert_disparada_diez = false
但是当使用以下代码使用 PDO 执行它时,我收到以下错误:
代码:
$alert_activa = true;
$alert_disparada_diez = false;
$dias = 10;
$alert = true;
$sql1 = " UPDATE alertasdocumentos SET alert_disparada_diez = :alert
WHERE alert_activa = :alert_activa AND ((alert_fecha - :dias) = (current_date))
AND alert_disparada_diez = :alert_disparada_diez ";
$q1 = $pdo->prepare($sql1);
$q1->bindParam(":alert", $alert, PDO::PARAM_BOOL);
$q1->bindParam(":alert_activa", $alert_activa, PDO::PARAM_BOOL);
$q1->bindParam(":alert_disparada_diez", $alert_disparada_diez, PDO::PARAM_BOOL);
$q1->bindParam(":dias", $dias, PDO::PARAM_INT);
$q1->execute();
错误:
ERROR: SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist: integer = date
LINE 2: ... WHERE alert_activa = $2 AND ((alert_fecha - $3) = (current...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit
type casts.
我试过像这样使用演员表:
(alert_fecha - :dias)::DATE = current_date
TO_DATE(alert_fecha - :dias) = current_date
CAST ((alert_fecha - :dias) AS DATE)
但是 php 中的 PDO 一直将其识别为强制转换错误
ERROR: SQLSTATE[42846]: Cannot coerce: 7 ERROR: cannot cast type integer to date
LINE 2: ... WHERE alert_activa = $2 AND (CAST ((ale...
解决方案
推荐阅读
- php - WordPress 网址更改,仅适用于某些类别
- python - Django - 基于日期差异的复杂注释/聚合
- python - 一起添加多个 tinyDB 数据库
- swift - Core Data 和 CloudKit 同步不一致
- javascript - 反应原生博览会项目的 TaskManager 和 BackgroundFetch 的位置?
- r - 如何将第一行的值更改为 R 中的行号?
- android - 为什么 Room 数据库初始化会同步?
- nginx - 在nginx中调试高upstream_header_time
- python - 使用 python 访问具有多个身份验证的 SharePoint 文件夹上的 CSV 文件
- python - 为什么 Django 不退出会话?.get 功能也不再像 .all 功能一样亮起?数据库中没有显示任何内容