2012-05-11 15 views
-3

検索フォームに応じて「訪問」テーブルの結果を表示する際に問題があります。Where句で空の結果を返します

ここはコードです!

   <?php 

       $date1 = $_POST['day'] . "-" . $_POST['month'] . "-" . $_POST['year']; 
       $date2 = $_POST['day1'] . "-" . $_POST['month1'] . "-" . $_POST['year1']; 
       $product=$_POST['product']; 
       $region=$_POST['region']; 
       $speciality=$_POST['speciality']; 
       $type=$_POST['visit_type']; 

$query="SELECT id, name, seller_1_name, seller_2_name FROM visits Where (speciality ='$speciality') AND (type ='$type') AND (product ='$product') AND (date BETWEEN '$date1' AND '$date2')"; 
$num=mysql_numrows($result); 
$row = mysql_fetch_array($result); 

?> 

<h3> Showing results where Product is <?php echo $product; ?>, Speciality is <?php echo $speciality ?>, Region is <?php echo $region ?> and Type is <?php echo $type ?>.</h3> 
     <table class="auto-style4" style="width: 100%" border="1"><tr> 
     <td style="height: 18px">ID</td> 
     <td style="height: 18px">Name</td> 
     <td style="height: 18px">seller one name</td> 
     <td style="height: 18px">seller 2 name</td> 
     </tr> 
     <tr> 
     <?php 
$i=0; 
while ($i < $num) { 


$f1=mysql_result($result,$i,"id"); 
$f2=mysql_result($result,$i,"name"); 
$f4=mysql_result($result,$i,"seller_1_name"); 
$f5=mysql_result($result,$i,"seller_2_name"); 

?>   
     <td><?php echo $f1; ?> </td> 
     <td><?php echo $f2; ?> </td> 
     <td><?php echo $f4; ?></td> 
     <td><?php echo $f5; ?></td> 
     </tr> 

<?php 
$i++; 
} 
?> 

は、それが正しく入力された変数との見出しを示すが、表には、エラーコードと空である:

警告:mysql_numrowsを():指定された引数は/ホーム/ ebareaで有効なMySQLの結果リソースではありません/ public_htmlの/.../.../ライン上results_submitt.php 175

警告:は、mysql_fetch_array():指定された引数は、家庭/で有効なMySQLの結果リソースではありません/ ebarea/public_htmlの/ .../... /results_submitt.php on line 176

誤っているもの>!

+0

'mysql_query()'呼び出しの後ろに '(die)(mysql_error())'を追加すると、実際のデータベースエラーが表示されます。しかし、私の推測では、あなたの日付に 'yyyy-mm-dd'の書式が必要だと思います。 – ThiefMaster

+0

あなたは実際にデータベースに照会しているようではありませんか? $結果はどこから来ますか? –

+2

**あなたのコードはSQLインジェクションに対して脆弱です。*あなたは本当に*準備済みの文を使用していなければなりません。私が何を話しているのか、それを修正する方法がわからない場合は、[Bobby Tables](http://bobby-tables.com)の記事を読んでください。あなたもあなたの質問を実行しているようには見えません。 – eggyal

答えて

2

mysql_queryを実行したことはありません。あなたの日付の問題を修正するには、日付についてMySQLにどのように伝えるかを明確にする必要があります。例:他の人が指摘したように

$query="SELECT 
      id, name, seller_1_name, seller_2_name 
     FROM visits 
     WHERE 
      (speciality ='$speciality') AND 
      (type ='$type') AND 
      (product ='$product') AND 
      (date BETWEEN DATE('$date1') AND DATE('$date2'))"; 

、しかし、あなたは、変数を移入するために使用しているコードは、SQLインジェクション攻撃に対して脆弱であり、実際に更新する必要があります。

+0

優秀です:)しかし、日付と時刻は動作していません:/任意のアイデアですか? –

+0

テーブルのレイアウトは分かりませんが、文字列の代わりに日付を使用していることを明示的にMySQLに伝える必要がありますか?私はそれで私の答えを編集します。 –

0

$num=mysql_numrows($result); 
$row = mysql_fetch_array($result); 
0

前には

$result = mysql_query($query); 

あなたは直前のmysql_queryを実行することを忘れてはありません:IDDは、これはあなたが複数の行を処理することができます

$result = mysql_query($query); 
$num = mysql_numrows($result); 
0

はありませんmysql_query();を忘れてください。また、ユーザーの入力を解析することも賢明です。今はSQLインジェクションに完全に脆弱です。

$query = mysql_query($sql, $conn); 
$total = mysql_num_rows(); 
while ($row = mysql_fetch_object()) 
{ 
    $data[] = $row; 
} 
foreach($data as $r) 
{ 
    echo "<td>".$r->id."</td>"; 
    echo "<td>".$r->name."</td>"; 
    echo "<td>".$r->seller_1_name."</td>"; 
    echo "<td>".$r->seller_2_name."</td>"; 
}    
関連する問題