php - 还有比这更好的管理查询变量的方法吗?

标签 php mysql sql

如果我需要根据某些变量从数据库中查询某些数据,是否有比这样做更好的方法?

<?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/

相关文章:

php - 来自数据库的不同 get_rows

mysql - SQL : current timestamp + 1 hour when inserting into DB

mysql - SQL求和函数(意外的SUM_SYM,期望END_OF_INPUT))

Java、SQL 数据库连接

php - PHP 中的 JavaScript 风格包装

php - 使用 PHP 将表插入到具有更多列的其他表中

php - 权限被拒绝错误 laravel

MySQL数据库和表的语法问题

mysql - 具有两个条件但只存在一个的内连接

mysql按天排序也有WHERE