【发布时间】:2021-09-28 18:50:58
【问题描述】:
我想调用方法$wpdb->get_results(),
我需要在 SQL 查询中添加参数(WHERE 子句)。
问题是,我想构建一个通用函数,它将接收一个参数对象并生成一个包含我的参数的 SQL 查询。
例如,如果这是我的基本查询:
$taxis = $wpdb->get_results("SELECT * FROM $table", ARRAY_A); // base query
这些是我的参数:
$params = array(
'color' => 'blue',
'model' => 'ford'
);
它将使用以下查询调用 get_results:
SELECT * FROM $table WHERE color='blue' AND model='ford';
有没有办法构建具有这种行为的函数?
*注意事项:
-
我不知道参数对象中有多少参数,也不知道它们将是哪些参数(这就是为什么它必须是通用的)。
-
我知道,(就我而言)我需要的唯一 SQL 子句是
WHERE =。
【问题讨论】:
-
是的,有一种方法(实际上可能不止一种方法)。你可以只使用一个循环和一些字符串连接。尽管显然您需要确保使用准备好的语句和参数来构建查询,以避免 SQL 注入和未转义的数据漏洞 - 这增加了一点复杂性(即在 WHERE 子句的同时构建参数数组)但不是很多.
-
无论你做什么,请确保在查询中使用
$wpdb->prepare(),这是ADyson提到的WordPress准备语句的方式。