0

我想从我的 HTML 表单中查询 3 个表。我尝试了很多格式和条件,但这是唯一一个接近我想要实现的格式和条件。我是新手,我需要帮助。我不知道我缺少什么来显示输出。

这是我的代码:

if(isset($_POST['submit'])) {
    $Summary=$_POST['summary'];
    $Status=$_POST['status'];
    $Priority=$_POST['priority'];

    $db=mysql_connect (" ") or die ('I cannot connect to the database because: ' .  mysql_error()); 

    $mydb=mysql_select_db(" ");
}

$where = '';
if(isset($Status) && !empty($Status)){
    $where .= "status ='$Status' AND ";
}
if(isset($Priority) && !empty($Priority)){
    $where .= "priority ='$Priority' AND ";
}
if(isset($Summary) && !empty($Summary)){
    $where .= "summary ='$Summary' AND ";
}

$sql= "select * from data $where";
$result = mysql_query($sql); 

if (mysql_num_rows($result)==0){ 
    echo "No Match Found"; 
}else{ 
    while($row = mysql_fetch_array($result)) {
        echo $Not_Completed=$row['Not Completed'];
        echo $Completed=$row['Completed'];
        echo $Miscommunications =$row['Miscommunications'];
        echo $Not_Given_Access=$row['Not Given Access'];
        echo $Unskilled=$row['Unskilled'];
        echo $Missing_Parts=$row['Missing Parts'];
        echo $High=$row['High'];
        echo $Medium=$row['Medium'];
        echo $Low=$row['Low'];
        echo $EFirst_name =$row['EFirst_name'];
        echo $ELast_name=$row['ELast_name'];
        echo $Employee_id=$row['Employee_id'];
    }
}

这是我的 HTML 表单:

<select name="status"> 
    <option>status</option>
    <option>Completed</option>
    <option>Not Completed</option>
</select>

<select name="priority"> 
    <option>priority</option>
    <option>High</option>
    <option>Medium</option>
    <option>Low</option>
</select> 

<select name="summary"> 
    <option>summary</option>
    <option>Miscommunications</option>
    <option>Not Given Access</option>
    <option>Unskilled</option>
    <option>Missing Parts</option>
</select>

<div align="right"><input type="submit" value="Search">

我收到警告:警告:mysql_num_rows() 期望参数 1 是资源,布尔值在 C:\wamp\www\search.php 第 191 行 //“if (mysql_num_rows($result)==0)”中给出。 ..

欢迎所有建议。谢谢。

4

5 回答 5

0
$sql = "select * from data where $where";

也在这里:

if(isset($Status) && !empty($Status)){
$where .= "status ='$Status' AND ";
}
if(isset($Priority) && !empty($Priority)){
 $where .= "priority ='$Priority' AND ";
}
if(isset($Summary) && !empty($Summary)){
    $where .= "summary ='$Summary' AND ";
}

如果,超过 1 iftrue那么将有一个尾随AND

在 s 之后添加if

$where .= '1=1';
于 2013-05-19T18:48:15.367 回答
0

当 mysql_num_rows() 报告此错误时,(在 99% 的情况下)您的查询是错误的。

$sql= "select * from data $where";

似乎where缺少关键字。如果$where不为空,请添加它。

喜欢:

$sql= "select * from data ".(empty($where)?"":"where ".substr($where, 0, -5)); // substr, for trimming the "AND"
于 2013-05-19T18:48:58.083 回答
0

您的查询格式错误并导致错误。当您$where在查询字符串中指定时,您忘记包含该WHERE语句。你需要做:$sql= "select * from data where ".$where;

于 2013-05-19T18:50:56.170 回答
0

尝试更改这部分代码

if(isset($Status) && !empty($Status)){
$where .= "status ='$Status' AND ";
}
if(isset($Priority) && !empty($Priority)){
 $where .= "priority ='$Priority' AND ";
}
if(isset($Summary) && !empty($Summary)){
    $where .= "summary ='$Summary' AND ";
}

到这个代码

$check = 0;
if(isset($Status) && !empty($Status)){
$where .= "status ='$Status'";
$check++;
}
if(isset($Priority) && !empty($Priority)){
 if($check != 0){
  $where .= " AND ";
 }
 $where .= "priority ='$Priority'";
 $check++;
}
if(isset($Summary) && !empty($Summary)){
 if($check != 0){
  $where .= " AND ";
 }
    $where .= "summary ='$Summary'";
}
于 2013-05-19T18:55:40.733 回答
0
$conditions = array();

if(isset($Status) && !empty($Status)){
  $conditions[] = "status ='$Status'";
}
if(isset($Priority) && !empty($Priority)){
  $conditions[] = "priority ='$Priority'";
}
if(isset($Summary) && !empty($Summary)){
  $conditions[] = "summary ='$Summary'";
}

$where = '';
if (!empty($conditions)) {
  $where = "WHERE " . implode(' AND ', $conditions);
}

$sql= "SELECT * FROM data $where";

编辑:您能否发布结果:

if(isset($_POST['submit'])) {
    $Summary=$_POST['summary'];
    $Status=$_POST['status'];
    $Priority=$_POST['priority'];

    $db=mysql_connect (" ") or die ('I cannot connect to the database because: ' . mysql_error()); 

    $mydb=mysql_select_db(" ");
} else {
    echo "I might not be connected to a database...";
}

echo 'Connection error? ' . mysql_error();

echo 'Ping Result: ' . mysql_ping() === FALSE ? 'Not connected.' : 'Connected.';

$conditions = array();

if(isset($Status) && !empty($Status)){
  $conditions[] = "status ='$Status'";
}
if(isset($Priority) && !empty($Priority)){
  $conditions[] = "priority ='$Priority'";
}
if(isset($Summary) && !empty($Summary)){
  $conditions[] = "summary ='$Summary'";
}

$where = '';
if (!empty($conditions)) {
  $where = "WHERE " . implode(' AND ', $conditions);
}

$sql= "SELECT * FROM data $where";

echo "SQL Command: $sql";

$result = mysql_query($sql); 

echo 'Query error? ' . mysql_error();

if (mysql_num_rows($result)==0){ 
    echo "No Match Found"; 
}else{ 
    while($row = mysql_fetch_array($result)) {
        echo $Not_Completed=$row['Not Completed'];
        echo $Completed=$row['Completed'];
        echo $Miscommunications =$row['Miscommunications'];
        echo $Not_Given_Access=$row['Not Given Access'];
        echo $Unskilled=$row['Unskilled'];
        echo $Missing_Parts=$row['Missing Parts'];
        echo $High=$row['High'];
        echo $Medium=$row['Medium'];
        echo $Low=$row['Low'];
        echo $EFirst_name =$row['EFirst_name'];
        echo $ELast_name=$row['ELast_name'];
        echo $Employee_id=$row['Employee_id'];
    }
}
于 2013-05-19T19:03:12.310 回答