В вашем подготовленном запросе нет заполнителя, вы фактически используете подстановку строк и открыты для SQL инъекции
$search = '%' . $search . '%';
$query = "SELECT * FROM redo WHERE name LIKE ? OR gender LIKE ? OR age LIKE ?
OR date LIKE ? OR contact LIKE ? OR code LIKE ?";
$statement = $conn->prepare($query);
$statement->bind_param('ssssss', $search, $search, $search, $search, $search, $search);
$statement->execute();
Вам также необходимо связать все столбцы с переменной в -> bind_result ( ), поскольку вы используете select * from redo
$statement->bind_result($row['col_1'], $row['col_2'], ...);
Если вам нужен только столбец name
, измените его на select name from redo ...