Процесс в PHP такой же - представление MySQL клиентом (PHP) воспринимается как обычная таблица, поэтому запросы к нему как
mysql_query("SELECT * FROM shipsummary");
// Or for whatever framework you're using:
$db->QueryArray("SELECT * FROM shipsummary");
должны работать правильно.Если это не работает должным образом, у пользователя MySQL, с которым вы обращаетесь к представлению, могут быть сломанные разрешения.(Хотя это кажется маловероятным).
ОБНОВЛЕНИЕ
После того, как вы отредактировали свой вопрос, я могу ясно увидеть проблему.
$sql1= " CREATE VIEW shipsumarry AS SELECT shipping.tarrif1, city.city_name
FROM shipping JOIN city
ON shipping.id_city = city.id_city";
$sql2= "SELECT * FROM shipsummary";
// Here, you need to execute $sql1 before $sql2 is useful.
$db->QueryArray($sql1);
// Now execute $sql2
$db->QueryArray($sql2);
Мы не понимаемНе знаю, какой класс базы данных или структуру вы используете, но если есть метод, сравнимый с QueryArray()
, который не возвращает набор результатов, а просто выполняет оператор, используйте его для создания представления.
Теперь, все это, как говорится ...
Если только определение представления не должно меняться каждый раз, когда выполняется этот код, и если у вас нет причин, чтобы DROP VIEW shipsummary
в конце выполнения этого скрипта каждыйВремя, очень, очень, очень, гораздо ... более разумно просто создать представление в базе данных, где оно будет оставаться навсегда, вместо того, чтобы продолжать заново создавать его с помощью PHP.Созданные представления остаются созданными.
Не думайте о них, как о временной экономии времени и кода.Создайте представления, которые вам понадобятся ONCE в вашей базе данных (используя PHPMyAdmin или mysql CLI, или как вы создали свои таблицы), и получите к ним доступ с помощью PHP.