gpt4 book ai didi

php - 使用 foreach 动态选择表

转载 作者:行者123 更新时间:2023-11-29 02:35:11 25 4
gpt4 key购买 nike

我使用 kohana,我有这个模型可以使用 PDO 从数据库中检索搜索结果:

class Model_Crud extends Model_Database {

private $tables=array('articles','comments','pages');

public function get_search_results()
{
$query = DB::query(Database::SELECT, 'SELECT * FROM :table WHERE ( title LIKE :search OR body LIKE :search OR tag LIKE :search)');
$query->param(':search', $_POST['search'] );
$query->bind(':table', $table );

foreach($this->tables as $table)
{
//echo $query;
$result[] = $query->execute();
}

return $result;
}
}

这行不通,因为 sql 语句的最终形式是这样的:

SELECT * FROM 'articles' WHERE ( title LIKE 'a random string' OR body LIKE 'a random string' OR tag LIKE 'a random string')

自然会失败,因为文章应该在 '

之外

这样的事情能做吗?或者我需要编写 3 个不同的查询,每个表一个?

最佳答案

看看 Database_Query 类,如果不为每个表创建单独的查询,似乎无法完成您所追求的。

可以使用转换:tableset_table 方法扩展Database_Query 类。

更好的是,您可以稍微抽象一下概念并添加新方法来转换要清理的参数。看看Database_Query::compile了解它是如何完成的。 (一点都不难。)

关于php - 使用 foreach 动态选择表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com