2015-10-26 121 views
1

我已經寫了一些代碼來搜索數據庫中的任何輸入,但它只是顯示一個白色的屏幕。我仍然很不確定使用面向對象,所以也許這是查詢?我已經嘗試了幾種不同的方式,但同樣的白色屏幕。必須是明顯的東西,只需要另一雙眼睛。試圖通過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

添加'否則{回聲「未設置」; }如果(isset($ _ POST ['searchsubmit'])){...}'如果你看到了,你會知道該怎麼做。對於其他POST陣列也是如此。 –

+0

或.... [searchsubmit]實際上沒有設置?所以只是跳過那個代碼塊? – 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

乾杯隊友,嘗試了這一點,但與以前一樣,只是返回一個白色的屏幕 – user2326995

+0

我確信這是一樣的。 – AdamJeffers

+0

嘗試了各種各樣的東西來整理它,但只是得到它!拒絕顯示任何錯誤 – user2326995

-1

可能是很多東西,但這裏有可能做到的理想方式搜索。確保始終使用addslashes()來防止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會給你更多有意義的更正。

編輯:顯然我的方法有點過時了,雖然沒有少功能。這是一個使用MySQLi對象的替代版本。您還可以在$ selectStmt中使用mysql_real_escape_string()代替addslashes(),以獲得更適合該任務的內容。

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

現在就來試試吧,謝謝Corey。 – user2326995

+1

這是'mysql_' - OP正在使用'mysqli_',並且您忘記了'('selectStmt)''的$''。 –

+0

這不是我downvote順便說一句。 –