Как загрузить все переменные из нескольких баз данных одним запросом?

0

У меня есть несколько таблиц, в которых хранится общая переменная. Как получить все переменные из каждой таблицы с одним запросом? И как вернуть все переменные, как в примере? Возможно ли это?

$id1 = BDR::selectBySQL("g","SELECT * FROM i1 WHERE ix='".$this->ixx."' LIMIT 1");
foreach($id1 as $id1) 
{
    $id1 = $id1['idz'];

}
$id2 = BDR::selectBySQL("g","SELECT * FROM i2 WHERE ix='".$this->ixx."' LIMIT 1");
foreach($id2 as $id2) 
{
    $id2 = $id2['idxc'];

}
$id3 = BDR::selectBySQL("g","SELECT * FROM i3 WHERE ix='".$this->ixx."' LIMIT 1");
foreach($id3 as $id3) 
{
    $id3 = $id3['idsd'];

}
return ['id2'=>$id1,'id2'=>$id2,'id3'=>$id3];
  • 0
    ВНИМАНИЕ : По возможности используйте подготовленные операторы, чтобы избежать внедрения произвольных данных в ваши запросы и создания ошибок SQL-инъекций . Это довольно просто сделать в mysqli и PDO, где любые предоставленные пользователем данные указываются с ? или :name указатель :name который позже заполняется с помощью bind_param или execute зависимости от того, какой из них вы используете.
Теги:
function

1 ответ

0
Лучший ответ

Если таблица имеет одну и ту же схему (то же, что и columnd и соответствующий тип данных), вы можете использовать select union all

  SELECT * FROM i1 WHERE ix='".$this->ixx."' LIMIT 1 
  union all  
  SELECT * FROM i2 WHERE ix='".$this->ixx."' LIMIT 1
  union all 
  SELECT * FROM i3 WHERE ix='".$this->ixx."' LIMIT 1 

Таким образом, вы должны получить список строк.. с желаемым результатом и итерацией по результату вы можете использовать все необходимые вам значения

$idAll = BDR::selectBySQL("g",
    "SELECT * FROM i1 WHERE ix='".$this->ixx."' LIMIT 1 
      union all  
      SELECT * FROM i2 WHERE ix='".$this->ixx."' LIMIT 1
      union all 
      SELECT * FROM i3 WHERE ix='".$this->ixx."' LIMIT 1 ");

foreach($idAll as $row) 
{
    $id[] = $row['idz'];

}

return $id;

вы можете проверить содержимое массива $ id с помощью var_dump($id);

и последний, если таблицы приходят из другой базы данных на том же сервере, вы можете использовать имя таблицы explictit, например: db1.i1

  • 0
    что делать дальше, как вводить переменные в функцию и возвращать
  • 0
    Я не понимаю ваш комментарий .. ..
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню