Как сделать так, чтобы условие всегда выполнялось с field =? - PullRequest
1 голос
/ 31 мая 2019

У меня есть заявление sql:

select * from table where id = ?

Теперь проблема в том, что я не знаю, отправит ли мне передний конец значение id, если это так, этот sql выглядит как id = 1, а если нет, то sql должен быть похож на id = true (фальшивый код ) найти все данные

Как я мог написать свой sql?

Или, это в корне неправильно?

Ответы [ 3 ]

1 голос
/ 31 мая 2019

Обычно это обрабатывается с помощью такой логики:

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;

Если вы хотите вернуть все идентификаторы, если переданное значение не существует:

select t.*
from table t
where id = ? or 
      not exists (select 1 from table t2 where t2.id = ?);
0 голосов
/ 31 мая 2019

Вы можете попробовать сделать это, чтобы получить правильный SQL-оператор в PHP

 function GetSqlStatement($id){
       return $sql = "select * from table where id = ".$id.";";
 }
0 голосов
/ 31 мая 2019

То, что вы можете попытаться сделать, это в вашем коде написать функцию для извлечения определенной записи и другую функцию для извлечения всех записей из вашей таблицы.

В 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, вызовите функцию для извлечения конкретной записи, убедившись, что передали значение, которое вы получили в качестве аргумента.В противном случае вызовите функцию, чтобы получить все записи из вашей таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...