Мой SQL SELECT запрос имеет 3 переменные, заданные с помощью HTML-формы, однако эти переменные могут быть нулевым:Как использовать переменные в ИНЕКЕ для запроса SQL SELECT
$suburb = (isset($_POST['suburb'])) ? $_POST['suburb'] : '';
$postcode = (isset($_POST['postcode'])) ? $_POST['postcode'] : '';
$state = (isset($_POST['state'])) ? $_POST['state'] : '';
Когда все 3 переменные вводятся в сформируйте процессы SELECT запросов в порядке (из-за AND в предложении WHERE). Но когда одна или несколько переменных пусты, ошибки запроса SELECT, поскольку они ищут значение NULL в базе данных.
То, что я хочу, чтобы это сделать, когда переменная равна нулю, я не хочу, где положение для него
Запрос:
$sql = <<<SQL
SELECT
cs.customerRefId,
cc.firstName,
cc.lastName,
cc.email,
cc.phone,
cc.mobile,
cs.seekingAddressSuburb,
cs.seekingAddressPostcode,
cs.seekingAddressState
FROM
customer_seeking cs
LEFT JOIN
customer_contact cc ON cc.customerRefId = cs.customerRefId
WHERE
cs.seekingAddressSuburb = '$suburb' AND
cs.seekingAddressPostcode = '$postcode' AND
cs.seekingAddressState = '$state'
SQL;
if(!$result = $db->query($sql)){
die('There was an error running the query [' . $db->error . ']');
}
Например, если только переменная состояния определена (cs.seekingAddressSuburb = «$ пригорода» И cs.seekingAddressPostcode = «$ почтового индекса» и удаляется из ИНЕК):
$sql = <<<SQL
SELECT
cs.customerRefId,
cc.firstName,
cc.lastName,
cc.email,
cc.phone,
cc.mobile,
cs.seekingAddressSuburb,
cs.seekingAddressPostcode,
cs.seekingAddressState
FROM
customer_seeking cs
LEFT JOIN
customer_contact cc ON cc.customerRefId = cs.customerRefId
WHERE
cs.seekingAddressState = '$state'
SQL;
проверки если пусто, если это так, не добавляйте и –
Не лучше ли использовать инструкции if в запросе SQL? – DLO
Вы должны использовать подготовленные инструкции, в противном случае вы уязвимы для SQL-инъекций, таких как передача в ''; drop table customer_seeking; '' for '$ state' – doublesharp