我下面有一条sql语句:
select * from table where id = ?
现在,问题是,我不知道前端是否会向我发送id的值,如果是,则此sql看起来像id = 1
,否则,sql应该像{{1} }(伪代码)查找所有数据
我怎么写我的sql?
或者,从根本上说是错误的吗?
答案 0 :(得分:1)
通常使用以下逻辑来处理:
select *
from table
where id = ? or ? is null;
如果您不想两次传递参数或使用命名参数:
select t.*
from table t cross join
(select ? as param) params
where id = params.param or params.param is null;
如果要传递的值不存在,则要返回所有id:
select t.*
from table t
where id = ? or
not exists (select 1 from table t2 where t2.id = ?);
答案 1 :(得分:0)
您可以尝试在代码中执行操作,编写一个用于提取特定记录的函数,以及另一个用于从表中提取所有记录的函数。
在PHP中,可能类似于:
// Fetching a specific record
function getCustomerRecord($customerId) {
// Code to fetch specific record from database
}
// Fetching all records
function getAllCustomerRecords() {
// Code to fetch all records from database
}
在处理收到的请求的函数中,首先检查是否传递了id值。如果传递了id的值,请调用该函数以获取特定记录,并确保传递您作为参数收到的值。否则,调用该函数以从表中获取所有记录。
答案 2 :(得分:0)
您可以尝试执行此操作以在PHP中获得正确的sql语句
function GetSqlStatement($id){
return $sql = "select * from table where id = ".$id.";";
}