Ошибка оракула запроса на старой версии PHP - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть этот скрипт на 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: недопустимый месяц в C: \ Inetpub \ wwwroot \ info.php в строке 31

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 db с одного сервера oracle.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

Если START_DATE имеет тип данных DATE, ваше заявление должно выглядеть следующим образом:

SELECT * FROM PROJECT.ACTIVITY WHERE START_DATE = TO_DATE('03-02-2012','DD-MM-YYYY');  
0 голосов
/ 06 февраля 2012

Проверьте параметр NLS_DATE_FORMAT в базе данных и убедитесь, что он соответствует любой дате, которую вы передаете в части PHP.Если нет, используйте to_date и преобразуйте его в нужный формат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...