Sim*_*mon 12 php mysql phpmyadmin
请看这张桌子
table
|id| |name| |order|
Run Code Online (Sandbox Code Playgroud)
我必须得到行,在哪里name = something
和 order = somevalue
所以我写
select `id` from `table` where `name` = 'something' and `order` = 'somevalue'
Run Code Online (Sandbox Code Playgroud)
但依赖于php逻辑,有时我需要获取所有行,其中name = something
,独立于order
值.我不想改变查询结构,因为在实践中有很多字段,并且可能的查询数量会变得非常大.所以我想保存查询的结构,当我需要按名称选择时,我想写这样的东西:
select `id` from `table` where `name` = 'something' and `order` = any value
Run Code Online (Sandbox Code Playgroud)
可能吗?
谢谢
Cha*_*rch 12
嗯,这是一种黑客,但如果你真的需要这样做,它会像这样工作:
select `id` from `table` where `name` = 'something' and `order` = `order`
Run Code Online (Sandbox Code Playgroud)
然后你只是说"无论订单在哪里都是一样的",所以它总是如此.
不,这是不可能的.你需要改变结构(可选择改为LIKE,这样你就可以使用'%',但这非常难看).
但是,您不需要编写其他查询来处理每个可能的组合.您可以简单地动态创建查询:
//create base query
$query = "select `id` from `table` where `name` = 'something' ";
//add order if we need it
if ($use_order)
$query .= "and `order` = 'somevalue' ";
//repeat for any other optional part
Run Code Online (Sandbox Code Playgroud)
请注意,您当然应该采取适当的措施来避免SQL注入和其他安全问题 - 我没有在此处包含此内容以简化操作.
归档时间: |
|
查看次数: |
20419 次 |
最近记录: |