Мой запрос SQL SELECT имеет 3 переменные, заданные формой HTML, однако эти переменные могут быть пустыми:
$suburb = (isset($_POST['suburb'])) ? $_POST['suburb'] : ''; $postcode = (isset($_POST['postcode'])) ? $_POST['postcode'] : ''; $state = (isset($_POST['state'])) ? $_POST['state'] : '';
Когда все 3 переменные вводятся в форму, запрос SELECT обрабатывается точно (из-за AND в предложении WHERE). Но когда одна или несколько переменных пусты, ошибки запроса SELECT, поскольку они ищут значение NULL в базе данных.
Я хочу, чтобы это было, когда переменная имеет значение null, я не хочу, чтобы предложение where для нее
Запрос:
$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 = '$ suburb' AND cs.seekingAddressPostcode = '$ postcode' AND удаляются из предложения WHERE):
$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;