Динамически Query Mysql с использованием PHP PDO и с использованием% в Select - PullRequest
0 голосов
/ 01 декабря 2018

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

$sql = "SELECT DISTINCT tb.TABLE_SCHEMA
                FROM 
                    INFORMATION_SCHEMA.TABLES AS tb
                        INNER JOIN
                    INFORMATION_SCHEMA.TABLES AS tb2
                WHERE tb.TABLE_NAME like '%OPTION%'
                AND tb2.TABLE_NAME like '%USER%'"; 
    $query = $handler->prepare($sql); 
    $query->execute(); 
    $dbnames = $query->fetchAll(PDO::FETCH_COLUMN);

Что я пытаюсь сделать: теперь, когда у меня есть имена, мне нужно просмотреть каждую базу данных, чтобы я мог получить список веб-сайтов, электронную почту администратора и логин пользователя.Я знаю, что могу достичь этого индивидуально, но я пытаюсь сделать это динамически с переменными.Выделенное ниже утверждение будет выполнено и даст мне мой ответ.Однако префикс перед подчеркиванием в FROM ysY6q8hmL7_options отличается в каждой базе данных.

SELECT option_value  FROM `ysY6q8hmL7_options` WHERE `option_name` = 'home' 

Я пробовал этот код, но постоянно получаю сообщение об ошибке.Как я могу решить эту проблему.Как я могу выполнять запросы динамически, не зная полного имени каждой таблицы.благодарю вас.

foreach ($result as $val) {   
    $sql = "SELECT option_value FROM $val.%_options WHERE option_name = 'home'"; 
    $query = $handler->prepare($sql); 
    $query->execute(); 
    $dbnames = $query->fetchAll(PDO::FETCH_ASSOC);
    printResultConsole($dbnames); 

1 Ответ

0 голосов
/ 01 декабря 2018

Ваша логика выглядит хорошо, но почему у вас есть этот знак процента в имени таблицы?Вероятно, именно это и вызывает ошибку (кстати, чье сообщение вы должны были поделить).

Попробуйте вместо этого:

    $sql = "SELECT option_value FROM " . $val . "_options WHERE option_name = 'home'"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...