2013-11-20 120 views
0

我正在嘗試創建搜索功能。我得到一些錯誤後一直在研究和編輯,現在我沒有得到任何錯誤,但沒有任何迴應。我完全難住,我想知道是否有人知道它有什麼問題。提前致謝! :d使用PHP/MYSQL的搜索功能

<html> 
<head> 
<title>Search Query</title> 
</head> 

<body> 
<?php 
$con = mysql_connect ("localhost", "root", ""); 
mysql_select_db ("music", $con); 

if (!$con) 
{ 
die ("Could not connect: " . mysql_error()); 
} 
$sql = mysql_query("SELECT * FROM entries WHERE Title LIKE '%term%'") or die (mysql_error()); 

while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)){ 
echo 'Title: ' .$row['Title']; 
echo '<br /> Artist: ' .$row['Artist']; 
echo '<br /> Album: '.$row['Album']; 
echo '<br /> Location: '.$row['Location']; 
echo '<br /> Media: '.$row['Media']; 
} 

mysql_close($con); 
?> 
</body> 
</html> 

這是形式使用:

<form action="search.php" method="post"> 
Search: <input type="text" name="term" /><br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
+3

你在標題中是否有數據庫中帶有詞語「term」的記錄? –

+0

用搜索輸入字段的內容替換'term' – VladH

+0

「term」是html表單上輸入的名稱 – user2979323

回答

2

你要通過變量來此查詢:

$term = mysql_real_escape_string($_GET['term']); 
mysql_query("SELECT * FROM entries WHERE Title LIKE '%" . $term . "%'"); 
+1

或者可能是$ _POST –

+1

有一件事我不喜歡你的代碼,因爲你在做內聯(就像我在下面做的那樣),%被視爲搜索字符,而不是搜索它。這裏最好的選擇是使用綁定的SQL – nrathaus

+0

@nrathaus True,這只是一個簡單的例子。不是生產代碼。 –

0

你的PHP代碼不正確,你正在使用「一詞'作爲一個字符串,而不是一個PHP值,你需要將它變成$ _GET [「name」],所以它看起來像這樣

$sql = mysql_query("SELECT * FROM entries WHERE Title LIKE '%". $_GET["term"] ."%'") or die (mysql_error()); 

!!!不過!!!這是非常不安全的,因爲它會允許某人使用SQL注入您的應用程序。所以不要像這樣使用它。過濾所提供的'term'值,只留下A-Za-z0-9(或類似的),使用正則表達式去除其餘部分。

+2

並閱讀有關棄用的方法和sql注入 – Strawberry

0

的index.php

<!DOCTYPE html> 
<head> 
<title>Untitled Document</title> 
</head> 
<body> 
<form action="search.php" method="post"> 
Search: <input type="text" name="term" /><br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

</body> 
</html> 

的search.php

<html> 
<head> 
<title>Search Query</title> 
</head> 

<body> 
<?php 

if($_POST['term']){ 

    $term = mysql_real_escape_string($_POST['term']); 

$con = mysql_connect ("localhost", "root", ""); 
mysql_select_db ("music", $con); 

if (!$con) 
{ 
die ("Could not connect: " . mysql_error()); 
} 
$sql = mysql_query("SELECT * FROM entries WHERE Title LIKE '%" . $term . "%'") or die (mysql_error()); 

while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)){ 
echo 'Title: ' .$row['Title']; 
echo '<br /> Artist: ' .$row['Artist']; 
echo '<br /> Album: '.$row['Album']; 
echo '<br /> Location: '.$row['Location']; 
echo '<br /> Media: '.$row['Media']; 
} 

mysql_close($con); 
}else{ 
    echo 'No search term found'; 
} 
?> 
</body> 
</html> 

放置在同一文件夾兩個頁面。

0
$term = mysql_real_escape_string($_POST['term']); 

if ($stmt = $mysqli->prepare("select * 
           . " from entries" 
           . " where Title like ?")) 
    { 
     $stmt->bind_param("i", "%$term%"); 
     $stmt->execute(); 
     //then fetch value 
    } else { 
     /* handle SQL error */ 
    }