У меня есть несколько таблиц, в которых хранится общая переменная. Как получить все переменные из каждой таблицы с одним запросом? И как вернуть все переменные, как в примере? Возможно ли это?
$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];
Если таблица имеет одну и ту же схему (то же, что и 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
mysqli
и PDO, где любые предоставленные пользователем данные указываются с?
или:name
указатель:name
который позже заполняется с помощьюbind_param
илиexecute
зависимости от того, какой из них вы используете.