我想知道是否有可能以优雅的方式根据某些变量值缩短查询.
例如:我有值命名$var = 0,我想发送一个如下所示的查询:
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100";
Run Code Online (Sandbox Code Playgroud)
但是$ var!= 1我想发送一个这样的查询:
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100 AND id = '$var'";
Run Code Online (Sandbox Code Playgroud)
因此,根据$ var的值,我想执行一个查询.它们仅与最后一个表达不同.我找到了两种可能的解决方案,但它们并不优雅,我根本不喜欢它们.
一个是用PHP制作的:
if ( $var == 0 ) {
$query_without_second_expression
} else {
$query_with_second_expression
}
Run Code Online (Sandbox Code Playgroud)
第二个是在mysql中制作的:
SELECT WHEN '$var' <> 0 THEN id, name, quantity
FROM products WHERE quantity > 100 AND id = '$var' ELSE id, name, quantity
FROM products WHERE quantity > 100 END
Run Code Online (Sandbox Code Playgroud)
但我不喜欢它 - 每个想法在一些whay中加倍查询.我可以这样做吗?
SELECT id, name, quantity
FROM products WHERE quantity > 100
CASE WHEN $var <> 0 THEN AND id = '$var'
Run Code Online (Sandbox Code Playgroud)
它更短,并在需要时添加部分查询.当然,真正的查询要复杂得多,并且真正期望更短的语句.有人有想法吗?
小智 5
如果我理解得好..
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100";
if ( $var != 0 ) {
$query .= " AND id = '$var'";
}
Run Code Online (Sandbox Code Playgroud)
你喜欢它吗?
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |