这似乎是一个简单的问题,但我一生都找不到答案。如何选择列中的所有行而不考虑值?例如,如果我想要列位置中的所有内容:
"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='I don't care, return everything'"
Run Code Online (Sandbox Code Playgroud)
请记住,我需要在那里找到位置,因为我正在对该数据库进行动态 URL 查询,否则我会忽略它。
编辑 我已经阅读了一些答案,并为我没有让自己更清楚而感到羞愧。我正在尝试查看是否可以使用 MySQL 查询来选择列中的每一行,而无需这样做:
if ($location == '') {
"SELECT * FROM whateverTable WHERE id='$id' AND date='$date'"
} else {
"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='$location'"
}
Run Code Online (Sandbox Code Playgroud)
我不是像那样修改我的代码(因为我的真实代码中有很多查询子句),而是尝试看看是否可以这样做:
"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='%'"
Run Code Online (Sandbox Code Playgroud)
或这个:
"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='.*'"
Run Code Online (Sandbox Code Playgroud)
但我没有任何运气。如果不是,我就继续前进。抱歉没有让自己更清楚
正如您在问题中所说,您应该动态构建查询并忽略该字段。那么查询将变为:
SELECT * FROM whateverTable
WHERE id = '$id'
AND date = '$date'
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因你不能这样做,你可以尝试这样的事情:
SELECT * FROM whateverTable
WHERE id = '$id'
AND date = '$date'
AND (location='$location' OR '$location' = '')
Run Code Online (Sandbox Code Playgroud)
设置$location为空字符串将导致返回所有位置。
并且不要忘记正确转义字符串以避免 SQL 注入攻击。
| 归档时间: |
|
| 查看次数: |
42311 次 |
| 最近记录: |