2016-03-30 24 views
-1

Sitemde gelişmiş bir arama yapmayı deniyorum, ancak boş bir alan varsa kullanıcı aramayı gönderdiğinde NULL olarak gönderilir. Boş parametreleri nasıl hariç tutacağımı bilmiyorum. Aşağıda Gelişmiş Arama PHP, MySQL

arama için biçimidir: Sorgu Aşağıda

<form> 
    <div class="form-group"> 
    <div class="col-sm-2"> 
     <label for="Author" class="control-label">Author</label> 
    </div> 
    <div class="col-sm-10"> 
     <input type="text" class="form-control" id="author" placeholder="Author" name="author"> 
    </div> 
    </div> 
    <div class="form-group has-feedback"> 
    <div class="col-sm-2"> 
     <label for="isbn" class="control-label">ISBN</label> 
    </div> 
    <div class="col-sm-10"> 
     <input type="text" class="form-control" id="isbn" placeholder="ISBN" name="isbn"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <div class="col-sm-2"> 
     <label for="genre" class="control-label">Genre</label> 
    </div> 
    <div class="col-sm-10"> 
     <input type="text" class="form-control" id="genre" placeholder="Genre" name="genre"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <div class="col-sm-2"> 
     <label for="tags" class="control-label">Tags</label> 
    </div> 
    <div class="col-sm-10"> 
     <input type="text" class="form-control" id="tags" placeholder="Tags" name="tags"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <div class="col-sm-2"> 
     <label for="location" class="control-label">Location</label> 
    </div> 
    <div class="col-sm-10"> 
     <input type="text" class="form-control" id="location" placeholder="Location" name="location"> 
    </div> 
    </div> 

    <div class="form-group"> 
    <div class="col-sm-offset-2 col-sm-10"> 
     <button type="submit" name="AdvancedSearch" value="Search" class="btn btn-block btn-lg btn-primary">Search</button> 

    </div> 
    </div> 
</form> 

geçerli: Herşeyden

$sql = "select * 
      from Book_info 
      where user_id=$u_id 
      AND title like '%$_REQUEST[title]%' 
      AND location like '%$_REQUEST[location]%' 
      AND author like '%$_REQUEST[author]%' 
      AND tags like '%$_REQUEST[tags]%' 
      AND genre like '%$_REQUEST[genre]%' 
      OR ISBN='$_REQUEST[isbn]'"; 

cevap

0

Birincisi, doğrudan istek değerlerini enjekte üzerinde prepared statements tercih hakkında yorum yapmak gerektiğini hissediyorum sorgu dizesine.

sorununuzla basit çözüm böyle bir şey olurdu:

<?php 

$sql="select * from Book_info where user_id=$u_id"; 

$title = $_REQUEST['title']; 
$location = $_REQUEST['location']; 

if($title != null) { 
    $sql .= " AND title like '%$title%'"; 
} 

if($location != null) { 
    $sql .= " AND location like '%$location%'"; 
} 

//and so on... 

fikir değeri null olup olmadığını kontrol edin ve ardından değeri olarak nerede sorguya fıkra bu kadar uzun bir yeni ekleme varlık boş değil (veya boş ya da eklemek istediğiniz diğer yüklemeler).