下面大家来看一个例子,假设大家有一个表t1,其中有2个字段:id和sql。大家需要根据sql字段中存储的查询语句来查询对应的数据。这时候就可以使用把列值作为查询语句的功能。
CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sql` varchar(1024) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
接下来大家往表t1中插入一些数据:
INSERT INTO t1 (sql) VALUES ('SELECT * FROM users WHERE age >18'); INSERT INTO t1 (sql) VALUES ('SELECT * FROM articles WHERE category = "Science"'); INSERT INTO t1 (sql) VALUES ('SELECT * FROM products WHERE price< 100');
现在大家可以使用以下语句来查询数据:
SELECT id, sql FROM t1;
这个语句会返回t1表中所有数据的id和sql字段。接下来大家可以在PHP中使用这个查询结果来动态生成查询语句。以下示例代码演示了如何使用PHP来执行t1表中保存的查询语句:
$mysqli = new mysqli('localhost', 'user', 'password', 'db'); $result = $mysqli->query('SELECT id, sql FROM t1'); while ($row = $result->fetch_assoc()) { $sql = $row['sql']; $query_result = $mysqli->query($sql); while ($query_row = $query_result->fetch_assoc()) { // Do something with the query result } }
上面的代码会先执行一个查询,将t1表中的数据全部取出来,然后逐行遍历这些结果,取出每一行的sql字符串,执行这个字符串对应的查询语句,并遍历查询结果。通过这种方式,大家可以实现非常灵活的数据查询操作。