PHP sql查询和多个WHERE的

问题描述:

我有一个自动完成的表,它使用我的index.php页面中的$ request过滤IDNO,姓,引用和transno字段。PHP sql查询和多个WHERE的

Raceid也从索引页传递给fetch.php筛选记录(原为网址的index.php页面上。

我的SQL查询不进行筛选。它显示的所有记录。当只有我使用“WHERE‘$ raceid’= raceid”“的一部分,那么它过滤100%。

我不能与代码结合起来下方,以获得结果。

如何使用两个”哪来的相同的SQL查询过滤表?

Fetch.php

​​

你不应该重新申报WHERE。其实你不能重新申报吧。

在你下面的查询:

$query = " 
    SELECT * FROM tblentries 
    WHERE '$raceid' = raceid 
    AND WHERE idno LIKE '%".$request."%' 
    OR surname LIKE '%".$request."%' 
    OR reference LIKE '%".$request."%' 
    OR transno LIKE '%".$request."%' 
    "; 

只需删除第二WHERE

$query = " 
    SELECT * FROM tblentries 
    WHERE '$raceid' = raceid 
    AND idno LIKE '%".$request."%' 
    OR surname LIKE '%".$request."%' 
    OR reference LIKE '%".$request."%' 
    OR transno LIKE '%".$request."%' 
    "; 

然而,牢记上述查询的 '逻辑';因为它的立场,种族ID将需要等于raceididno将需要等于请求... 任何其他值需要匹配。也就是说,如果您的OR条件触发,您不需要raceid!你可能想利用括号来解决这个问题。

我已经分裂行了一点点进一步清楚地表明这在下面的例子:

$query = " 
    SELECT * FROM tblentries 
    WHERE '$raceid' = raceid 
    AND 
    (
    idno LIKE '%".$request."%' 
    OR surname LIKE '%".$request."%' 
    OR reference LIKE '%".$request."%' 
    OR transno LIKE '%".$request."%' 
) 
    "; 

希望这有助于! :)

+0

事实上,你需要* NOT * redeclare'WHERE'。 ;) –

+0

哈哈,是的,我应该更换那里的术语来强调:P –

您只需将您的“OR”值包装在括号内,以使其与raceid检查分开。

$query = " 
SELECT * FROM tblentries 
WHERE 
    '$raceid' = raceid 
    AND 
    (
     idno LIKE '%".$request."%' 
     OR surname LIKE '%".$request."%' 
     OR reference LIKE '%".$request."%' 
     OR transno LIKE '%".$request."%' 
    ) 
"; 

请确保您查看使用准备好的语句!直接将$ _POST ['raceid']注入查询会导致您的问题。

我认为有两个错误在您的查询:

  1. 你传入$radeid错误

应该是raceid = '".$raceid."'例如:

$query = " 
    SELECT * FROM tblentries 
    WHERE raceid = ".$raceid." 
    AND WHERE idno LIKE '%".$request."%' 
    OR surname LIKE '%".$request."%' 
    OR reference LIKE '%".$request."%' 
    OR transno LIKE '%".$request."%' 
    "; 
  1. 您正在使用的地方两次,删除一个地方我。Ë

    $query = " 
        SELECT * FROM tblentries 
        WHERE raceid = ".$raceid." 
        AND idno LIKE '%".$request."%' 
        OR surname LIKE '%".$request."%' 
        OR reference LIKE '%".$request."%' 
        OR transno LIKE '%".$request."%' 
        "; 
    
  2. 最终的查询是

    $query = " 
          SELECT * FROM tblentries 
          WHERE raceid = ".$raceid." 
          AND (idno LIKE '%".$request."%' 
          OR surname LIKE '%".$request."%' 
          OR reference LIKE '%".$request."%' 
          OR transno LIKE '%".$request."%') 
          "; 
    
开始=>
+0

1.顺序无关紧要。 – Aknosis

+0

感谢一百万人的工作! – user7174575

Aknosis和RToyota。我很快就说话了。它根据我从另一个页面传递的url值过滤了查询100%,但“index.php”中的“employee_search”框不再通过他的sql查询过滤“fetch.php”中的表格。 我的索引页面将值传递给fetch.php,你们很好地协助了我,看起来像这样。

当我删除“$ raceid = $ _POST ['raceid'];”代码 并使用

if(isset($_POST["query"])) 
{ 

$connect = mysqli_connect("localhost", "root", "", "registerdb"); 
$request = mysqli_real_escape_string($connect, $_POST["query"]); 
$query = " 
SELECT * FROM tblentries 
    WHERE idno LIKE '%".$request."%' 
    OR surname LIKE '%".$request."%' 
OR reference LIKE '%".$request."%' 
OR transno LIKE '%".$request."%' 
ORDER BY surname ASC, firstname ASC 
    "; 

然后它过滤的搜索框。随着包括在你的代码raceid,它只有通过过滤传入raceid的URL值。 我们再怎么改变这个SQL查询的任何建议请?

<!DOCTYPE html> 
<html> 
<head> 
    <title>Entry details</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> 
</head> 
<body> 
    <br /><br /> 
    <td><a style="color:white;background-color: blue;height:40px;width:200px;font-size: 20px; position:absolute; TOP:3px;LEFT:70px;" class="btn btn-success" id="myBtn" href="admin1.php""><span align="center" name="myBtn" aria-hidden="true" ></span>Return Dashboard</a></td> 

    <div class="container"> 
    <td><a style="color:white;background-color: blue;height:40px;width:140px;font-size: 20px; position:absolute; TOP:95px;LEFT:80px;" class="btn btn-success" id="myBtn" href="#" onClick="history.go(0)"><span align="center" name="myBtn" aria-hidden="true" ></span> Clear Search</a></td>  

    <u><h2 align="center">Check Race Payment Status</h2></u> 
    <br /><br /> 
    <label style="font-size:25px"><u>Search Person Details by Surname/ID No or Barcode scanner:</u></label> 
    <div id="search_area"> 
    <input type="hidden" class="form-control" name="raceid" id="raceid" 
    value="<?php echo $_GET['a']?>"/> 
    <input type="text" name="employee_search" id="employee_search" class="form-control input-lg" autocomplete="off" placeholder="Type Employee Name" /> 
    </div> 
    <br /> 
    <br /> 
    <div id="employee_data"></div> 
    </div> 
</body> 
</html> 

<script> 
$(document).ready(function(){ 

load_data(''); 

function load_data(query, typehead_search = 'yes') 
{ 
    $.ajax({ 
    url:"fetch.php", 
    method:"POST", 
    data:{query:query, typehead_search:typehead_search}, 
    success:function(data) 
    { 
    $('#employee_data').html(data); 
    } 
    }); 
} 

$('#employee_search').typeahead({ 
    source: function(query, result){ 
    $.ajax({ 
    url:"fetch.php", 
    method:"POST", 
    data:{query:query}, 
    dataType:"json", 
    success:function(data){ 
    result($.map(data, function(item){ 
     return item; 
    })); 
    load_data(query, 'yes'); 
    } 
    }); 
    } 
}); 

$(document).on('click', 'li', function(){ 
    var query = $(this).text(); 
    load_data(query); 
}); 

}); 
</script>