2013-11-20 90 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 */ 
    }