Несколько таблиц данных в PHP/MySQL?
В 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 answers
Это называется "множественный запрос". Расширение mysql в PHP не имеет никаких средств для включения нескольких запросов. Расширение mysqli позволяет использовать несколько запросов, но только с помощью метода multi_query(). См. http://php.net/manual/en/mysqli.multi-query.php
Использование нескольких запросов не рекомендуется, поскольку это может увеличить потенциальный ущерб, причиняемый атаками с использованием SQL-инъекций. Если вы используете несколько запросов, вам следует использовать строгие методы проверки кода, чтобы избежать SQL уязвимость к инъекциям.
Это должно быть возможно с более новым MySQL и расширением mysqli (улучшенным) php. Я не уверен, поддерживают ли это какие-либо уровни абстракции БД.
Смотрите соответствующие документы MySQL и Документы PHP.
PDOStatement::nextRowset()
похоже, это то, что тебе нужно.
Если вы используете классический 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;
}
Который будет работать так, как ожидалось