最有效的查询?

时间:2011-02-03 20:25:35

标签: mysql

我正在创建一个函数来从数据库中获取所有关键字

数据库有两个表

keywords             [id         | word      | account]   ( aliased as k )
keywordsTemplateLink [templateId | keywordId]             ( aliased as ktl )

函数签名是

getKeywords($id = null){}

所以它的工作方式是,
如果id!= null则添加where子句,该子句必须将结果集限制为ktl.templateId = $id

的关键字

实现此查询的最有效方法是什么?

我在想SELECT id, keyword FROM keywords k, templatekeywordlink tkl WHERE tkl.templateId= $id AND tkl.keywordId = k.id AND k.account=$account

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

function getKeywords($id = null){
//query generated by function
$query .= ($id != null) ? ' where ktl.templateId = ' . $id : '';
}

答案 1 :(得分:1)

以这种方式通过变量连接创建sql通常是不好的做法..

如果你不想让一些脚本小子通过sql注入你,请使​​用prepared queries

$stm = $dbo->prepare("SELECT id, keyword FROM keywords k, templatekeywordlink tkl WHERE tkl.templateId= ? AND k.account=?);

$stm->execute(array($id,$account));