Вызов MYSQL CREATE VIEW с использованием php-кода? - PullRequest
4 голосов
/ 07 октября 2011

здесь нужно немного просветления, и это мой первый пост здесь.

Я хотел бы вызвать и использовать ранее созданное представление MySQL, используя php ... это возможно? или, другими словами, мне интересно .... мы можем ИЛИ как мы называем представление MySQL, которое мы уже создали с помощью php? уменьшить кодирование длинных запросов

стандартные универсальные коды, следующие:

$sql= " SELECT shipping.tarrif1, city.city_name
         FROM shipping JOIN city
   ON shipping.id_city = city.id_city";
$db->QueryArray($sql);   

while ($row = $db->Row()) {
echo $row->city_name. " - " . $row->tarrif1 . "<br />\n"; 
}

теперь для MYSQL VIEWS:

$sql= " CREATE VIEW shipsumarry AS SELECT shipping.tarrif1, city.city_name
         FROM shipping JOIN city
   ON shipping.id_city = city.id_city";

Чистая команда MYSQL:

query: SELECT * FROM shipsummary

В PHP:

 $sql = i'm badly stuck here...please help

Как мы можем получить к нему доступ с помощью php.

спасибо, прежде чем

Дополнение 1:

хорошо ... позвольте мне переписать пример:

$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";
$db->QueryArray($sql2);

$ sql2 не может видеть корабельную версию VIEW, потому что она уже в другом var

как использовать, а затем выполнить $ sql1? & $ sql2?

Ответы [ 2 ]

6 голосов
/ 07 октября 2011

Процесс в 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.

1 голос
/ 07 октября 2011

Почему бы просто не отправить это

SELECT * FROM shipsummary

На запрос MySQL, он должен работать, если я не понимаю ваш вопрос ...

...