Цикл mysql запросов php

программирование php MySQL базы данных сервер

Как сделать цикл запросов к sql при не нахождении нужных данных в одной таблице он будет искать в другой, а в случае не нахождения вовсе просто false


$db = Db::getInstance();
$stmt = $db->prepare( "SELECT * FROM $table WHERE $sql_req = ? " );
$stmt->execute(array( $r ));
if( $stmt->fetch(PDO::FETCH_ASSOC) ) {
$act = $a ;
$req = $r ;
} else {
// Error
// Если ошибка то повторяется цикл но другой таблицы
}

Примечание:
Работать умею...

Вообщем так:
Есть 3 разные таблицы

table1
table2
table3

Общее только id все остальные столбцы разные...

Например у table1 & table2 есть столбец "url" а у table3 есть "title"

Должна быть проверка существования запрашиваемых данных в таблице...

например:

site.com/djoni


$a = 'all' ;
$r = 'djoni'

Проще говоря действие all и запрос ....

Нужно проверить есть ли страницы в разных таблицах с таким url или title

Можно решить просто


$db = Db::getInstance();
$stmt = $db->prepare( "SELECT * FROM $table1 WHERE $sql_req = ? " );
$stmt->execute(array( $r ));
if( $stmt->fetch(PDO::FETCH_ASSOC) ) {
// все ок
} else {

$stmt = $db->prepare( "SELECT * FROM $table2 WHERE $sql_req = ? " );
$stmt->execute(array( $r ));
if( $stmt->fetch(PDO::FETCH_ASSOC) ) {
// ок 2
} else {


$stmt = $db->prepare( "SELECT * FROM $table3 WHERE $sql_req = ? " );
$stmt->execute(array( $r ));
if( $stmt->fetch(PDO::FETCH_ASSOC) ) {
// ок 3
} else {
// Error
}

}



}

Но тут много кода да и 3 раза посылается запрос (

Спасибо за ответ )
Ответы:
так и делать, как вы написали. проверку данных можно сделать отдельным методом (функцией), в качестве параметра которой будет имя таблицы. А имена таблиц запихать в массив и все,
$db   = Db::getInstance();
function check($name){
$stmt = $db->prepare( "SELECT * FROM $table WHERE $sql_req = ? " );
$stmt->execute(array( $r ));
if( $stmt->fetch(PDO::FETCH_ASSOC) ) {
$act = $a ;
$req = $r ;
} else {
return false;
}
}
$names = array('name1','name2',...,'namen');
foreach($names as $name) {
$result=check($name);
if($result) break;
}
Это так примерно. Честно говоря, просто не совсем понятно, что вам не понятно, раз у вас в коде используются объекты, то с циклами и массивами вы должны уметь работать


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.