php - 使用PHP PDO动态查询Mysql并在Select中使用%

标签 php mysql sql database pdo

我已经查询了数据库并获得了符合我的条件的数据库名称列表。这就是我跑去获取信息的原因。

$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);

我想要实现的目标: 现在我有了名称,我需要运行每个数据库,以便获得网站列表、管理员电子邮件和用户登录名。我知道我可以单独实现这一点,但我正在尝试使用变量动态地实现这一点。下面的 select 语句将运行并给出我的答案。但是,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); 

最佳答案

你的逻辑看起来没问题,但是为什么表名中有百分号?这可能就是导致错误的原因(顺便说一句,您应该共享其消息)。

试试这个:

    $sql = "SELECT option_value FROM " . $val . "_options WHERE option_name = 'home'"; 

关于php - 使用PHP PDO动态查询Mysql并在Select中使用%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53566275/

相关文章:

php - 使用 javascript 在不同的表单字段中显示 2 个不同的 MySQL 结果

mysql - Mysql 在每个 SQL 中为两个表连接返回 UNION 的重复条目

java - 名称已被现有对象使用

php 文件不会列出数据库表中的行

php - 如何读取 < abc : xyz > xml tag using php?

mysqli : Cannot create MANY to MANY table?

带日期范围的 SQL Server 计数

php - mysqli_fetch_field() 多次输出字段名称

php - array_sum 未返回 0

mysql - 使用子查询汇总Mysql表