我正在生成一个API,它接受某些参数,执行算法并返回结果。作为这个过程的一部分,我有几个不同的子句,可以根据发送到API的内容进入SQL语句。这产生了许多这种格式的章节:
if(isset($_GET['val'])) {
$sqljoin = " INNER JOIN b ON b.1=a.1 "
$sqlwhere = " WHERE b.2 = " . $_GET['val'];
}
$sql = "SELECT * FROM a " . $sqljoin . $sqlwhere;
最初很好,但现在我有大约6个不同的子句进入它,包括一个JOIN和一个WHERE子句。有没有更好的组织方式?
这可能对你有帮助。
$sql = "SELECT * FROM a ";
$where = " WHERE 1=1 ";
if(isset($_GET['val'])) {
$sqljoin = " INNER JOIN b ON b.1=a.1 "
$sqlwhere = " AND b.2 = " . $_GET['val'];
}
if(isset($_GET['val2'])) {
$sqljoin2 = " INNER JOIN b2 ON b2.1=a.1 "
$sqlwhere2 = " AND b2.2 = " . $_GET['val2'];
}
$fullquery = $sql . $sqljoin . $sqljoin2 . $where . $sqlwhere . $sqlwhere2 ;
一些注意事项:
你的代码是在sql注入漏洞。应该用
转义变量$ _GET [' val '] = mysql_real_escape_string ($ _GET [' val ']);
你应该切换到PDO或mysql。