В вашем коде есть несколько проблем.
1. В вашем запросе, при поиске по полям `name`, `fathername` и `phone`, вы использовали строковые значения вместо переменных. Вместо этого вы должны использовать переменные `$data['name']`, `$data['fathername']` и `$data['phone']`.
```php
$query = sprintf(
"SELECT * FROM `people` WHERE
(LOWER(`surname`) LIKE LOWER('%s')
OR LOWER(`name`) LIKE LOWER('%s')
OR LOWER(`fathername`) LIKE LOWER('%s')
OR LOWER(`phone`) LIKE ('%s'))",
$data['surname'],
$data['name'],
$data['fathername'],
$data['phone']
);
```
2. В функции `getParam` вы возвращаете переменную `$data`, которая является локальной для функции. Чтобы получить значение `$data` в основной части кода, вы должны объявить переменную `$data` в основной части кода перед вызовом функции `getParam`.
```php
$data = array(
'surname' => getParam('surname', $conn),
'name' => getParam('name', $conn),
'fathername' => getParam('fathername', $conn),
'phone' => getParam('phone', $conn)
);
```
3. Ошибка может возникнуть, если вам необходимо подключиться к базе данных перед выполнением запроса. Убедитесь, что у вас есть правильное подключение `$conn` перед выполнением запроса.
```php
$conn = mysqli_connect("хост", "пользователь", "пароль", "имя_бд");
```
4. В вашем коде нет никакой обработки ошибок при выполнении запроса. Добавьте проверку на ошибку, чтобы увидеть, в чем именно проблема:
```php
$result = mysqli_query($conn, $query);
if (!$result) {
die('Ошибка выполнения запроса: ' . mysqli_error($conn));
}
```
Улучшенный код будет выглядеть так:
```php
function getParam($param, $conn, $default = '') {
(isset($_POST[$param])) ? $data = '%'.mysqli_real_escape_string($conn, $_POST[$param]).'%' : $data = $default;
return $data;
}
$conn = mysqli_connect("хост", "пользователь", "пароль", "имя_бд");
$data = array(
'surname' => getParam('surname', $conn),
'name' => getParam('name', $conn),
'fathername' => getParam('fathername', $conn),
'phone' => getParam('phone', $conn)
);
$query = sprintf(
"SELECT * FROM `people` WHERE
(LOWER(`surname`) LIKE LOWER('%s')
OR LOWER(`name`) LIKE LOWER('%s')
OR LOWER(`fathername`) LIKE LOWER('%s')
OR LOWER(`phone`) LIKE ('%s'))",
$data['surname'],
$data['name'],
$data['fathername'],
$data['phone']
);
$result = mysqli_query($conn, $query);
if (!$result) {
die('Ошибка выполнения запроса: ' . mysqli_error($conn));
}
// Обработка результатов запроса
while ($row = mysqli_fetch_assoc($result)) {
// Ваш код обработки найденных записей
}
// Закрытие соединения с базой данных
mysqli_close($conn);
```
Это улучшенный код для подготовки данных и формирования запроса, который может быть использован для поиска записей по одной или нескольким введенным данным в базе данных.