我正在创建一个函数来从数据库中获取所有关键字
数据库有两个表
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
有更好的方法吗?
答案 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));