错误oracle查询较旧的PHP版本

时间:2012-02-06 02:22:58

标签: php oracle iis oracle11g

我在PHP上有这个脚本:

$sql = "
        SELECT * 
        FROM PROJECT.ACTIVITY 
        WHERE START_DATE = '03-02-2012' 
";
$stid = oci_parse($conn,$sql);
oci_execute($stid);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

它在我的另一台机器上工作但在另一台机器上失败了,
失败的消息:
警告:oci_fetch_array()[function.oci-fetch-array]:ORA-01843:第31行的C:\ Inetpub \ wwwroot \ info.php中不是有效月份

work machine:
- win 7 prof x64
- IIS 7.5
- PHP 5.2.6
- Oracle 11g

work machine:
- win 7 prof x64
- Apache 2.2.11
- PHP 5.2.6
- Oracle 11g

failed machine:
- win 2003 server x64
- IIS 6.0
- PHP 5.1.4
- Oracle 11g

这三台机器从一台oracle服务器获得oracle db。

2 个答案:

答案 0 :(得分:0)

检查数据库上的NLS_DATE_FORMAT参数,确保它与您在PHP部分中传递的日期相匹配。如果没有,请使用to_date并将其转换为所需格式。

答案 1 :(得分:0)

如果START_DATE的数据类型为DATE,则您的语句应如下所示:

SELECT * FROM PROJECT.ACTIVITY WHERE START_DATE = TO_DATE('03-02-2012','DD-MM-YYYY');