小编And*_*rew的帖子

我可以使用PDO预处理语句来绑定标识符(表或字段名称)或语法关键字吗?

我正在研究一个动态查询,它使用变量来指定表,字段/列和要搜索的值.我已经让查询在没有变量的情况下按预期工作,在phpMyAdmin(手动输入查询)和代码中通过将变量连接成一个完整的查询.

但是,当我使用bindParam()bindValue()绑定变量时,它返回一个空数组.

这是我的代码:

function search_db($db, $searchTerm, $searchBy, $searchTable){
    try{
        $stmt = $db->prepare('
            SELECT 
                * 
            FROM 
                ?
            WHERE 
                ? LIKE ?
        ');
        $stmt->bindParam(1, $searchTable);
        $stmt->bindParam(2, $searchBy);
        $stmt->bindValue(3, '%'. $searchTerm.'%');
        $stmt->execute();
    } catch(Exception $e) {
        return array();
    }
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

// database initialization, creates the $db variable
require(ROOT_PATH . "include/database.php");
$matches = search_db($db, 'search term', 'myColumn', 'myTable');

var_dump($matches);
Run Code Online (Sandbox Code Playgroud)

预期结果:数据库中的行数组

实际结果:一个空数组

php mysql pdo prepared-statement

11
推荐指数
1
解决办法
1866
查看次数

标签 统计

mysql ×1

pdo ×1

php ×1

prepared-statement ×1