2015-10-26 5 views
1

Я написал код для поиска базы данных для любого введенного, однако он просто показывает белый экран. Я все еще не уверен в использовании OO, так что, возможно, это запрос? Я пробовал несколько разных способов, но тот же белый экран. Должно быть что-то очевидное, просто нужно еще пару глаз.Попытка поиска базы данных через PHP

Соединение с базой данных прекрасно работает, поэтому это не проблема, и значение $ POST верное.

search.php

<?php 
session_start(); 
include 'searchform.php' 
include 'pagetemplate.php'; 
if(isset($_POST['searchsubmit'])){ 
     $name=$_POST['name']; 
       if ($stmt = $connection->prepare ("SELECT * FROM users WHERE FirstName LIKE ? OR LastName LIKE ? OR Username LIKE ?")) 
       { 
       $stmt->bind_param('sss', $name, $name, $name); 
       $stmt->execute(); 
       $stmt->bind_result($personresult); 
       $stmt->fetch(); 
       printf($personresult); 
       } 
       else 
       { 
       echo "<p>Please enter a search query</p>"; 
       } 
      } 
     } 

    ?> 
+0

белый экран, как правило, означает, что ошибки синтаксиса –

+2

добавьте 'еще {эхо«не установлено»; } 'to' if (isset ($ _ POST ['searchsubmit'])) {...} ', если вы это видите, вы поймете, что нужно делать. то же самое для другого массива POST. –

+0

OR .... [поискпоказать] на самом деле не установлен? Так просто пропустить этот блок кода? – AdamJeffers

ответ

0

У вас есть дополнительный }, попробуйте это вместо того, чтобы ...

<?php 
session_start(); 
include 'searchform.php' 
include 'pagetemplate.php'; 
if(isset($_POST['searchsubmit'])) 
{ 
     $name=$_POST['name']; 

     if ($stmt = $connection->prepare ("SELECT * FROM users WHERE FirstName LIKE ? OR LastName LIKE ? OR Username LIKE ?")) 
     { 
      $stmt->bind_param('sss', $name, $name, $name); 
      $stmt->execute(); 
      $stmt->bind_result($personresult); 
      $stmt->fetch(); 
      printf($personresult); 
     } 
     else 
     { 
      echo "<p>Please enter a search query</p>"; 
     } 
} else 
    echo "NOT SET!"; 

?> 
+0

Cheers mate, попробовал это, но так же, как и раньше, просто вернул белый экран – user2326995

+0

Я был убежден, что это было так. – AdamJeffers

+0

Пробовал всевозможные вещи, чтобы разобраться, но просто получить это! Отказаться от каких-либо ошибок тоже – user2326995

-1

Может быть много вещей, но здесь, наверное, идеальный способ сделать Поиск. Удостоверьтесь, что у вас всегда есть addlashes(), чтобы защитить от SQL-инъекций.

$selectStmt = "SELECT * FROM users WHERE (FirstName LIKE '%".addslashes($_POST['searchquery']) ."%') OR (LastName LIKE '%".addslashes($_POST['searchquery']) ."%') OR (Username LIKE '%".addslashes($_POST['searchquery']) ."%')"; 
$result = mysql_query($selectStmt); 
while($row = mysql_fetch_assoc($result)) print_r($row); 

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

Если это все еще не работает - повторите попытку $ selectStmt выше и попробуйте распечатать его в phpMyAdmin. Затем MySQL даст вам гораздо более значимые исправления.

EDIT: По-видимому, мои методы немного устарели, хотя и не менее функциональны. Вот альтернативная версия с использованием объекта MySQLi. Вы также можете использовать mysql_real_escape_string() вместо addslashes() в $ selectStmt для чего-то более подходящего для задачи.

$dbConnection = new mysqli($host, $user, $password, $name); 
if ($result = $dbConnection->query($selectStmt)) { 
    while($row = $result->fetch_assoc()) { print_r($row); } 
} 
+0

Отдайте ему шанс, спасибо Кори. – user2326995

+1

это 'mysql_' - ОП использует' mysqli_', и вы забыли '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. –

+0

, что не является моим downvote btw. –

Смежные вопросы