Добрый день форумчане. Никак не могу разобраться где ошибка. База данных web таблица courses в ней 4 поля id title length description. Нужно реализовать поиск в базе данных через форму. <?php try{$conn = new PDO ("mysql:host=localhost;dbname=web", 'root', ''); if(isset($_POST['search'])){ $valueToSearch = $_POST['valueToSearch']; $sql = "SELECT * FROM `courses` WHERE CONCAT('id', title','length', 'description') LIKE '%".$valueToSearch."%'"; } else{$sql = "SELECT * FROM courses"; $result = $conn->query($sql); } ?> <!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> </head> <body> <form action="select_oop1.php" method="post"> <input type="text" name="valueToSearch" placeholder="Value To Search"><br><br> <input type="submit" name="search" value="Filter"><br><br> <table> <tr> <th>Id</th> <th>Название</th> <th>Длительность</th> <th>Описание</th> </tr> <?php while ($row = $result->fetch(PDO::FETCH_ASSOC)){ ?> <tr> <td><?php echo $row['id'];?></td> <td><?php echo $row['title'];?></td> <td><?php echo $row['length'];?></td> <td><?php echo $row['description'];?></td> </tr> <?}?> </table> </form> </body> </html> <?php } catch (PDOException $e) { echo "error"; } $conn = null; ?> --- Добавлено --- Без поиска все норм. При поиске выдает Uncaught Error: Call to a member function fetch() on null in C:\OpenServer\domains\localhost\forum.php\select_oop1.php:53 Stack trace: #0 {main} thrown in C:\OpenServer\domains\localhost\forum.php\select_oop1.php on line 53
ты забыл в первом условии query и использовать хотябы блокнот notepad++ с синтаксической подсветкой, стиль solarized
Спасибо за ответ, но дело не в этом query. Его применение ничего не изменило ошибка та же. Просто целый день потратил на этот поиск уже глаз замылился. Sublime юзаю.
Замени внутри конката апострафы на грависы: сейчас у тебя склеиваются константные строки, а будут склеиваться значения полей кортежа.
Если быть точным, то да это была ошибка, но включение в первое условие query не изменило ситуацию. --- Добавлено --- Все спасибо за помощь все правильно дело было в грависах