如果我需要根据某些变量从数据库中查询某些数据,是否有比这样做更好的方法?
<?php
if($_POST['condition'] == '1'){
$sign = '<';
$number = '3';
} else if($_POST['condition'] == '2'){
$sign = '>';
$number = '10';
}
SELECT value1, value2 FROM table WHERE id $sign $number
?>
如果我有一个像这样的简单查询,但我也需要在 ORDER BY
中使用某些条件,我需要添加另一个 AND
以及其他一些条件,并且很快,查询看起来更像变量,而不是查询。
是否有另一种使用变量来更改查询的方法,如果我在查询中有很多变量,这样会很糟糕吗?
实际使用的所有查询都已正确格式化(希望)并使用准备好的语句,这只是示例。
最佳答案
在这个级别上,我想说,除了编写一组完全生成 sql 的代码之外,没有更好的方法了。从一个角度来看,您实际上已经开始这样做了,从另一个角度来看,这就是方法对于像这样的“if x then this sql else that sql end”场景来说有点过分了。有人建议正确参数化值,但如果您完全控制 sql 并且不将用户数据连接到其中,那么这有点没有实际意义,并且可能会使思考更加复杂
为了保持内容的可读性和清晰性,可能不值得过多地参与创建比查询更可变的 SQL。如果选择/变化有限(您的示例仅包含 2 个选择),则以更改后的形式再次写出查询可能会更有用
关于php - 还有比这更好的管理查询变量的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796437/