简单的PHP搜索查询

时间:2013-05-25 04:55:49

标签: php mysql forms search

我正在尝试创建一个简单的搜索查询脚本,它会从表单中提取结果并相应地从数据库返回结果。

'connect.php'

<?php

$strServer = "http://server33.000webhost.com";
$strDatabase = "******";
$strUser = "******";
$strPwd = "******";

$strDB = mysql_connect($strServer, $strUser, $strPwd) or die ("Could not connect to database"); print mysql_error();
$database = mysql_select_db("$strDatabase", $strDB); print mysql_error();   
?>

'的search.php'

<?php

ini_set ('display_errors', 1);

include ('connect.php'); print mysql_error();

$query = ('SELECT * FROM 'properties' WHERE ('type' = '$_POST['type']') OR ('area' = '$_POST['area']')');
$result = mysql_query($query) or die ("Couldn't execute query."); print mysql_error();

while($r = mysql_fetch_array($result)) 
{
echo $r['type'];
echo $r['area'];
}
?>

我搜索了无数的论坛和教程,看不出我做错了什么。请帮帮我!提前致谢

2 个答案:

答案 0 :(得分:2)

我建议您像这样更改您的查询

$query = "SELECT * FROM `properties` 
          WHERE (`type` = '".mysql_escape_string($_POST['type'])."') 
          OR (`area` = '".mysql_escape_string($_POST['area'])."')";

并尽量避免使用mysql_ *函数,最好使用mysqli并尝试使用mysql_escape_string作为帖子并获取值

答案 1 :(得分:1)

您应该检查两件事:     include('connect.php'); print mysql_error();

最好不要在独立语句中使用mysql_error()。无论如何,在search.php页面中不需要mysql错误。您可以做的另一个更正是:(connection.php)     $ database = mysql_select_db(“$ strDatabase”,$ strDB)或die(“连接数据库时出错”.mysql_error());

最后,您可能获得的所有解析错误都是由于此声明。

$ query =('SELECT * FROM'properties'WHERE('type'='$ _POST ['type']')OR('area'='$ _POST ['area']')'); < / p>

当你用'开始一个字符串块时,那么块的结尾也是'。接下来,两个字符串不能简单连接,必须使用。符号

$a='make me'.'good'; //valid
$b='hello'$a'!!thanks'; // invalid
$b='hello'.$a.'!!thanks'; //valid (concatenation is used here with . sign)

$otherway="hello {$a} !!thanks"; //valid

所以你的代码可以写成

$query = "SELECT * FROM 'properties' WHERE 'type' = '$_POST['type']' OR 'area' = '$_POST['area']'";

这是因为“启动和”结束了字符串,但它并不关心“程序内部。”