Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Parse error: syntax error, unexpected T_STRING on line 21
Форумы портала PHP.SU » » Работа с СУБД » Parse error: syntax error, unexpected T_STRING on line 21

Страниц (1): [1]
 

1. Антоннн - 27 Августа, 2015 - 06:43:40 - перейти к сообщению
Добрый день! При обращении к БД выходит ошибка "Parse error: syntax error, unexpected T_STRING"
Простой запрос проходит, а вот с условиями такого рода нет, понятно, что ошибка в синтаксисе, да вот не пойму где именно. В сети пишут, что ошибка не обязательна в 21 строке.
ps: такой запрос в оракле проходит.
ps2: (SYSDATE, 'dd.mm') без ' ' не проходит в оракле.
Кто может помочь? Улыбка


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ($conn = oci_connect("Login", "Password", "SID", 'utf8')) {
  3.    echo '';
  4.  } else {
  5.    $error = oci_error();
  6.    echo "Нет подключения!". $err['text'];
  7.  }
  8. $sql = oci_parse($conn, 'SELECT ffio, podr
  9.  FROM (SELECT ffio,
  10.               to_podr (lschet.fcex) podr,
  11.               lschet.fdatuv,
  12.               fcex,
  13.               lschet.flasttime,
  14.               CASE
  15.                  WHEN fborndate <> 0
  16.                  THEN
  17.                     SUBSTR (to_oradate (fborndate), 1, 5)
  18.               END
  19.                  AS day
  20.          FROM GALZP1.persons INNER JOIN GALZP1.lschet ON lschet.ftperson = persons.fnrec)
  21. WHERE day = (SELECT TO_CHAR (SYSDATE, 'dd.mm') FROM DUAL)
  22.       AND fdatuv = 0
  23.       AND to_podr (fcex) IS NOT NULL
  24.       AND flasttime = 0');
  25. oci_execute($sql);
  26. echo "<table border='1'>\n";
  27. while ($row = oci_fetch_array($sql, OCI_ASSOC+OCI_RETURN_NULLS)) {
  28.     echo "<tr>\n";
  29.     foreach ($row as $item) {
  30.         echo "    <td>" . ($item) . "</td>\n";
  31.     }
  32.     echo "</tr>\n";
  33. }
  34. echo "</table>\n";
  35.  
  36. ?>
2. Dastor - 27 Августа, 2015 - 10:01:27 - перейти к сообщению
Измени кавычки самого запроса на двойные либо экранируй в 'dd.mm'
(SYSDATE, \'dd.mm\')
3. Антоннн - 27 Августа, 2015 - 10:07:31 - перейти к сообщению
Dastor пишет:
Измени кавычки самого запроса на двойные либо экранируй в 'dd.mm'
(SYSDATE, \'dd.mm\')


-Изменить не получится, т.к оракловая функция to_char требуется одинарные ковычки,
-экранирование не дало результата.
4. Dastor - 27 Августа, 2015 - 10:09:16 - перейти к сообщению
Я имел ввиду сам запрос целиком

PHP:
скопировать код в буфер обмена
  1. $sql = oci_parse($conn, "SELECT ffio, podr
  2. FROM (SELECT ffio,
  3.              to_podr (lschet.fcex) podr,
  4.              lschet.fdatuv,
  5.              fcex,
  6.              lschet.flasttime,
  7.              CASE
  8.                 WHEN fborndate <> 0
  9.                 THEN
  10.                    SUBSTR (to_oradate (fborndate), 1, 5)
  11.              END
  12.                 AS day
  13.         FROM GALZP1.persons INNER JOIN GALZP1.lschet ON lschet.ftperson = persons.fnrec)
  14. WHERE day = (SELECT TO_CHAR (SYSDATE, 'dd.mm') FROM DUAL)
  15.      AND fdatuv = 0
  16.      AND to_podr (fcex) IS NOT NULL
  17.      AND flasttime = 0");

 

Powered by ExBB FM 1.0 RC1