Как исправить «отсутствующую запись FROM-предложения для таблицы»?

У меня была такая же ошибка, но я исправил ее, изменив php.ini и / или отредактировав файл PHP!

blockquote>

Есть два разных способа обойти синтаксис синтаксического анализа.

Способ 1 (ваш файл PHP)

Избегайте в вашем файле PHP этого:


Убедитесь, что вы так выразились


Ваш код содержит

ПРИМЕЧАНИЕ: Отсутствует php после !

Способ 2 (файл php.ini)

Существует также простой способ решить вашу проблему. Найдите значение свойства short_open_tag (используйте в текстовом редакторе с помощью Ctrl + F!) [/ ​​G2] и примените следующее изменение:

; short_open_tag = Off

-

short_open_tag = On

Согласно описанию основных директив php.ini , short_open_tag позволяет использовать короткий открытый тег (), хотя это может вызвать проблемы при использовании с xml ( не будет работать, если это включено)!

ПРИМЕЧАНИЕ: Перезагрузите свой сервер (например, Apache) и перезагрузите веб-страницу PHP в своем браузере.

1
задан GMB 15 January 2019 в 22:39
поделиться

2 ответа

Мне кажется, что вы должны избавиться от переменной flight_d и блока IF и переместить логику в сам запрос, например:

CREATE OR REPLACE FUNCTION flightFunc(
    flight_identificator INTEGER, 
    new_timestamp timestamp with time zone) 
RETURNS TABLE(
    flight_id INTEGER,
    flight_no CHARACTER(6),
    departure_airport character(3),
    scheduled_departure timestamp with time zone,
    arrival_airport character(3),
    scheduled_arrival timestamp with time zone
)
LANGUAGE plpgsql
AS $

BEGIN

    UPDATE flights SET
        scheduled_departure = $2,
        scheduled_arrival = $2 + flights.scheduled_arrival - flights.scheduled_departure
    WHERE flights.flight_id = $1 AND flights.scheduled_departure < $2
    RETURNING 
        flights.flight_id,  
        flights.flight_no,
        flights.departure_airport,
        flights.scheduled_departure,
        flights.arrival_airport,        
        flights.scheduled_arrival;

END;
$;
0
ответ дан GMB 15 January 2019 в 22:39
поделиться

Удалить пункт FROM! Это делает CROSS JOIN. И вам нужно SET. Итак:

UPDATE flights
    SET scheduled_departure = $2,
        scheduled_arrival = $2 + flight_d
    WHERE flights.flight_id = $1
RETURNING 
    flights.flight_id,  
    flights.flight_no,
    flights.departure_airport,
    flights.scheduled_departure,
    flights.arrival_airport,        
    flights.scheduled_arrival;
0
ответ дан Gordon Linoff 15 January 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: