试图让一个简单的查询通过并且它不起作用 - 这里的新手。
其他 php 文件和查询运行良好。
$sql = "select sum(rese_nshw) as noshows from tnht_eseo where edta_data = '19.10.01'" ;
$sumParse = oci_parse($conn, $sql);
oci_define_by_name($sumParse, "noshows", $total);
oci_execute($sumParse);
while(oci_fetch($sumParse)){
echo "noshows:". $total;
}
怎么了?只是输出空白。
直接在 Oracle 中运行 SQL 查询,它输出 6 作为此查询的 NOSHOW。
如果EDTA_DATA
是date
(数据类型(,请不要将其与字符串进行比较,因为'19.10.01'
是字符串。Oracle 会隐式尝试将其转换为适当的日期,但这不必总是有效。除了 19.10.01 可以是任何内容(2019 年 10 月 1 日或 2001 年 10 月 19 日,或 ...(,具体取决于 NLS 设置。
控制它;查看使用日期文字是否有帮助(它始终具有yyyy-mm-dd
格式(:
where edta_data = date '2019-10-01'
此外,如果edta_data
包含时间部分(小时、分钟、秒(,那么最简单的选择是截断它,例如
where trunc(edta_data) = date '2019-10-01'
但它会阻止 Oracle 在该列上使用索引(如果存在(。可以修复,没问题;但是 - 首先看看上述任何内容是否有帮助。
您必须使用此处定义的大写:
column_name 查询中使用的列名。
对 Oracle 的默认非区分大小写的列名使用大写。 对区分大小写的列名称使用确切的列名大小写。
从: https://www.php.net/manual/en/function.oci-define-by-name.php
然后: oci_define_by_name($sumParse,"NOSHOW",$total(;