Передача пустых значений для MySQL

Я пытаюсь передать пустое поле в php при поиске в моей базе данных. В настоящее время это работает для меня, но так как я новичок в mysql а также php Я был бы признателен за альтернативное или лучшее решение для моего проекта.

if (isset($_POST['submit'])){
$val1 = trim($_POST['tester']);
if($val1 == NULL){$val1 = "IS NOT NULL";} else {$val1 = "= '$val1'";}
$val2 = trim($_POST['test']);
if($val2 == NULL){$val2 = "IS NOT NULL";} else {$val2 = "= '$val2'";}
}
require ('connect.php');
$query = "SELECT * FROM report WHERE Tester $val1 AND Test $val2";
$testerdb = mysqli_query($db,$query);

2

Решение

Ну, первая проблема в том, что вы не проверяете, действительно ли существуют ваши данные $ _POST.

Я предлагаю вам написать какой-нибудь помощник, например, класс Request со следующими методами

public static function post($index)
{
return isset($_POST[$index]) ? $_POST[$index] : NULL;
}
public static function get($index)
{
return isset($_GET[$index]) ? $_GET[$index] : NULL;
}

Например, если вы ищете несколько полей с ANDЯ могу предложить вам использовать массив ($wheres = array();) которые вы можете добавить свои поля ($wheres[] = "Tester = $val"), а затем вам просто нужно проверить, пуст ли ваш массив или нет. Если нет, просто взорвите его implode функция: ($where = implode(' AND ', $wheres);)

Итак, полный пример

$wheres = array();
if($tester = Request::post('tester'))
{
$wheres[] = '`tester` = '.$tester;
}
else
{
$wheres[] = '`tester` IS NOT NULL';
}

if($test = Request::post('test'))
{
$wheres[] = '`test` = '.$test;
}
else
{
$wheres[] = '`test` IS NOT NULL';
}

$where = sizeof($wheres) ? "WHERE ".implode(" AND ", $wheres) : "";
require ('connect.php');
$query = "SELECT * FROM report $where";
$testerdb = mysqli_query($db,$query);

Или вы можете Google для Query Builders

Постскриптум Никогда не забывайте избегать данных, которые вы собираетесь отправить в базу данных 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]