带有 Where 子句的空结果


Empty results with Where Clause

根据搜索表单显示"访问"表中的结果时遇到问题!

这是代码!

                <?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 结果资源

怎么了>!

你从未执行过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注入攻击,并且确实应该更新。

没有

$result = mysql_query($query);

以前

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

你只是忘记运行mysql_query之前:

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

这可以帮助您处理多行,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>";
}