-3

検索フォームによっては「訪問」テーブルの結果を表示するのに問題があります。

ここにコードがあります!

                <?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(): 指定された引数は、175 行目の /home/ebarea/public_html/.../.../results_submitt.php の有効な MySQL 結果リソースではありません

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

何が間違っている >!

4

4 に答える 4

2

あなたは決して実行しませんでしたmysql_query。たぶん、次のようなものです:

$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')";
$result=mysql_query($query); ## This line is new.
$num=mysql_numrows($result);
$row = mysql_fetch_array($result);

日付の問題を修正するには、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 インジェクション攻撃に対して脆弱であり、実際に更新する必要があります。

于 2012-05-11T16:27:40.940 に答える
0

ここにはない

$result = mysql_query($query);

$num=mysql_numrows($result);
$row = mysql_fetch_array($result);
于 2012-05-11T16:27:45.530 に答える
0

前に mysql_query を実行するのを忘れただけです。

$result = mysql_query($query);
$num = mysql_numrows($result);
于 2012-05-11T16:28:31.217 に答える
0

これは、複数の行を処理するのに役立ちます、idd、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>";
}              
于 2012-05-11T16:31:08.647 に答える