我正在尝试创建一个简单的搜索查询脚本,它会从表单中提取结果并相应地从数据库返回结果。
'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'];
}
?>
我搜索了无数的论坛和教程,看不出我做错了什么。请帮帮我!提前致谢
答案 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']'";
这是因为“启动和”结束了字符串,但它并不关心“程序内部。”