0

我需要一点帮助来解决我的问题...

场景:我试图在我的数据库中搜索某些内容,但结果是“查询为空”,但我尝试搜索的内容已经在我的数据库中。我正在尝试搜索“中庭酒店”

这是我的数据库的屏幕截图: 在此处输入图像描述

这是我的结果页面的屏幕截图:

在此处输入图像描述

最后这是我的代码:

<input type='submit' name='search' value='Search Building' onClick="this.form.action='search_bldg.php'; this.form.submit()">
<input type="text" id="idSearch"name="searchBldg" size="40" value="<?php echo $_POST['searchBldg']; ?>">        
<fieldset  width= "50px">
<legend>BUILDING/S</legend>
<?php
$search = $_POST["searchBldg"];
$data = mysql_query("SELECT * FROM tbldata WHERE fldBldgName LIKE '%$search%'"); 
$result = mysql_query($data) or die(mysql_error());
while($row = mysql_fetch_array( $result )) 
{ 
echo $row['fldBldgName']; 

} 
?>
</fieldset>

我想知道我的查询有什么问题......提前谢谢......

4

3 回答 3

1

您正在执行两次查询(第 7 行和第 8 行)。这可能是问题所在。尝试这样的事情:

<input type='submit' name='search' value='Search Building' onClick="this.form.action='search_bldg.php'; this.form.submit()">
<input type="text" id="idSearch"name="searchBldg" size="40" value="<?php echo $_POST['searchBldg']; ?>">        
<fieldset  width= "50px">
<legend>BUILDING/S</legend>
<?php
$search = $_POST["searchBldg"];
$query= "SELECT * FROM tbldata WHERE fldBldgName LIKE '%$search%'"; //Your sql
$result = mysql_query($query) or die(mysql_error()); //execute your query
while($row = mysql_fetch_array( $result )) 
{ 
echo $row['fldBldgName']; 

} 
?>
</fieldset>

PS 使用mysqli_*orPDO代替,mysql_*因为从 PHP 5.4 开始不推荐使用

于 2013-08-04T14:30:55.360 回答
0

你应该使用mysqliorPDO因为mysql_*是折旧的。

试试下面的代码:它正在使用mysqli. 它应该工作...

<?php
$search = $_POST["searchBldg"];

//connecting to db...mysqli_connect("example.com","peter","abc123","my_db")
$con=mysqli_connect(host,username,password,dbname);

//searching...
$query= "SELECT * FROM tbldata WHERE fldBldgName LIKE '%$search%'"; 

//execute the query
$result = mysqli_query($query) or die(mysqli_error()); 
while($row = mysqli_fetch_array( $result )) 
{ 
echo $row['fldBldgName']; 

} 
mysqli_close($con);
?>
于 2013-08-04T14:38:23.140 回答
0

您的代码中存在一些问题,我将通过注释您的代码来演示:

<input type='submit' name='search' value='Search Building' action='search_bldg.php'  onClick="this.form.submit();"> <!-- setting action-attribute directly in form-tag, no need to use js for that -->
<input type="text" id="idSearch" name="searchBldg" size="40" value="<?php echo $_POST['searchBldg']; ?>">  <!-- added a space between id="search" and name-attribute -->
<fieldset  width= "50px">
<legend>BUILDING/S</legend>
<?php
$search = $_POST["searchBldg"];
$data = "SELECT * FROM tbldata WHERE fldBldgName LIKE '%$search%'"; //mysql_query is removed, because the actual query is executed below 
$result = mysql_query($data) or die(mysql_error());
while($row = mysql_fetch_assoc( $result )) //mysql_fetch_array doesn't return associative arrays, therefore it's replaced with mysql_fetch_assoc 
{ 
echo $row['fldBldgName']; 

} 
?>

</fieldset>

您当然应该清理数据(因此不会将不需要的数据插入到数据库中)并使用除 mysql_* 之外的其他东西,如先前答案中所述。

另一个问题(这不是真正的问题)是元素的名称、列名等。searchBldg 与 searchB1dg 非常相似,并且可能很容易出现难以找到的打字错误。

于 2013-08-04T14:49:09.797 回答