-1

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

'连接.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();   
?>

'搜索.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'];
}
?>

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

4

2 回答 2

2

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

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

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

于 2013-05-25T04:57:59.397 回答
1

您应该查看两件事:include ('connect.php'); 打印 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']')');

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

IE

$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']'";

这是因为“开始和”结束字符串,但它不关心程序内部的'。

于 2013-05-25T05:19:24.903 回答