2015-03-11 3 views
1

Ниже мой код ...PHP поиск п.д.о. код с несколькими параметрами

Я пытаюсь создать поиск с несколькими параметрами в PHP PDO .... с многократными если еще состояние ... в singlw запросе .. .

плз помочь ... сделать это ... как я могу сделать это с помощью PHP PDO ...

<?php 
$db=new PDO('mysql:host=localhost;dbname=circulation_scheme_prepaid','root',''); 
if(isset($_POST['Submit'])) 
{ 
$result=$db->prepare('SELECT * FROM receipt_entry WHERE'); 
    if($_POST['book']!='') 
    { 
     $result->bindParam(':book',$_POST['book']); 
    }  
$result->execute(); 
$data = $result->fetchAll(); 
} 
?> 

Я nned сделать выше код, как это ..

<?php 
require_once("includes/config.php"); 
if(isset($_POST['search'])) 
{ 
    $sql = "SELECT * FROM properties WHERE"; 

    if($_POST['location']!='') 
    { 
     $location = $_POST['location']; 
     $sql .= " location = '$location' AND"; 
    } 

    if($_POST['purpose']!='') 
    { 
     $purpose = $_POST['purpose']; 
     $sql .= " purpose = '$purpose' AND"; 
    } 
    $sql = substr($sql, 0 ,-3); 

$query = mysql_query($sql); 
while($row = mysql_fetch_array($query,MYSQL_ASSOC)) 
     { 
      $rows[] = $row; 
     } 

} 
?> 
+1

Я подозреваю, что вы действительно хотите знать, является ли добавить _ «где„_ или _“и» _ для текущего SQL _перед_ Добавляя новый тест на ток sql string. –

+0

yes sir ,, точно .... –

ответ

0

Вы можете попробовать что-то вроде этого:

if (isset($_POST['search'])) { 
    $sql = 'SELECT * FROM properties'; 
    $where = array(); 
    $params = array(); 

    if (!empty($_POST['location'])) { 
    $where[] = "location = :location"; 
    $params[':location'] = $_POST['location']; 
    } 

    if (!empty($_POST['purpose'])) { 
    $where[] = "purpose = :purpose"; 
    $params[':purpose'] = $_POST['purpose']; 
    } 

    if(count($where) > 0) 
     $sql .= ' WHERE ' . implode(' AND ', $where); 

    $stmt = $db->prepare($sql); 

    foreach($params as $param => $value) { 
    $stmt->bindParam($param, $value); 
    } 

    $stmt->execute(); 
    $data = $stmt->fetchAll(); 

    print_r($data); 
} 
+0

Используя этот метод, я думаю, вам понадобится ['bindValue'] (http://php.net/manual/en/pdostatement.bindvalue.php) [вместо] (http://stackoverflow.com/questions/1179874/pdo-bindparam-versus-bindvalue) ['bindParam'] (http://php.net/manual/en/pdostatement.bindparam.php). Кроме того, вы можете использовать '$ stmt-> bindParam (": ". $ Param, $ params [$ param])' или генерировать значение 'foreach' [по ссылке] (http://php.net/manual/en /pdostatement.bindparam.php#Hcom98145). Кстати, небольшое объяснение вашего решения также будет полезно. – showdev

Смежные вопросы