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

クエリを 2 回実行しています (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は PHP 5.4 で非推奨になったため、代わりにmysqli_*orを使用します。PDOmysql_*

于 2013-08-04T14:30:55.360 に答える
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>

もちろん、データをサニタイズして (不要なデータが db に挿入されないように)、前の回答で述べたように mysql_* 以外のものを使用する必要があります。

もう 1 つの問題 (これは実際には問題ではありません) は、要素の名前、列名などです。searchBldg は searchB1dg と非常によく似ており、見つけにくい入力エラーが発生しやすい可能性があります。

于 2013-08-04T14:49:09.797 に答える