Несколько таблиц данных в PHP / MySQL? - PullRequest
3 голосов
/ 13 октября 2008

В asp.net вы можете получить НЕСКОЛЬКО таблиц данных из одного обращения к базе данных. Можете ли вы сделать то же самое в php?

Пример:

$sql ="select * from t1; select * from t2;";
$result = SomeQueryFunc($sql);
print_r($result[0]); // dump results for t1
print_r($result[1]); // dump results for t2

Можете ли вы сделать что-то подобное?

Ответы [ 4 ]

3 голосов
/ 14 октября 2008

Это называется "мультизапрос". Расширение mysql в PHP не имеет никаких средств для включения нескольких запросов. Расширение mysqli позволяет вам использовать multi-query, но только через метод multi_query (). Смотри http://php.net/manual/en/mysqli.multi-query.php

Использование нескольких запросов не рекомендуется, поскольку это может увеличить потенциальный ущерб от атак с использованием SQL-инъекций. Если вы используете несколько запросов, вы должны использовать строгие привычки проверки кода, чтобы избежать уязвимости внедрения SQL.

0 голосов
/ 13 ноября 2011

Если вы используете классический MySQL, вы не можете. Вы можете создать функцию, которая будет выглядеть как

function SomeQueryFunc($queries) {
    $queries = explode(';', $queries);
    $return = array();
    foreach($queries as $index => $query) {
        $result = mysql_query($query);
        $return[$index] = array();
        while($row = mysql_fetch_assoc($result)) {
           foreach($row as $column => $value) {
              $return[$index][$column] = $value;
           }
        }
    }
    return $return;
}

, который будет работать как положено

0 голосов
/ 13 октября 2008

PDOStatement::nextRowset() похоже на то, что вы ищете.

0 голосов
/ 13 октября 2008

Это должно быть возможно с более новым MySQL и mysqli (улучшенным) расширением php. Я не уверен, что какие-либо слои абстракции БД поддерживают это.

См. Соответствующие Документы MySQL и PHP документы .

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