2016-03-23 16 views
1

Ich habe zwei für die unten Funktion zwei Zustand im Ergebnis eines SQL-Abfrage Ergebnis setzen:SQL-Abfrage Ergebnis basierend auf Zustand

  1. Tabelle Projekte haben zwei Spalten a_name und b_name und ich mag Ergebnis auszuschließen, in denen b_name hat value = xxxxx und der Wert in a_name und b_name ist gleich.

Im Folgenden wird zur Zeit verwendet:

public function search_project_name($term) 
{ 
    $params = array(':term' => $term); 
    $sql = "SELECT * FROM projects WHERE project_name like '%$term%'ORDER BY projects.create_date DESC $limit"; 
    $stmt = parent::query($sql, $params); 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) : 
     $result[]=$row; 
    endwhile; 
    return $result; 
} 
+0

Need 'space' zwischen' '% $ term% 'und' ORDER' – Saty

Antwort

0

Sie diese Bedingung mit einem not Operator könnte hinzufügen:

SELECT * 
FROM projects 
WHERE a_name like '%$term%' AND 
     NOT (a_name = 'xxxx' and a_name = b_name) 
+0

public function search_project_name ($ term) \t { \t \t $ params = array (': term' => $ term); \t \t $ sql = "SELECT * FROM Projekte WHERE project_name wie '% $ term%' UND NOT (project_name = 'XXXX' und project_name = builder_name) ORDER BY projekte.create_date DESC $ limit"; \t \t $ stmt = parent :: query ($ sql, $ params); \t \t while ($ row = $ stmt-> holen (PDO :: FETCH_ASSOC)): \t \t \t $ $ row führen [] =; \t \t endwhile; \t \t Rückgabe $ Ergebnis; \t} –

+0

Die oben scheint nicht –

+0

public function search_project_name ($ term) \t { \t \t $ params = array zu arbeiten (': Begriff' => $ term); \t \t $ sql = "SELECT * FROM Projekte WHERE Projektname wie '% $ Term%' UND NICHT (Projektname = 'XXXX') UND NICHT (Projektname = Builder_Name) ORDER BY projekte.create_date DESC $ limit"; \t \t $ stmt = parent :: query ($ sql, $ params); \t \t while ($ row = $ stmt-> holen (PDO :: FETCH_ASSOC)): \t \t \t $ $ row führen [] =; \t \t endwhile; \t \t Rückgabe $ Ergebnis; \t} –

0

Problem Teil ist $term in Abfrage so ersetzen $term mit :term aktualisierten Code versuchen:

public function search_project_name($term){ 
    $params = array(
    ':term'=>$term); 
    $sql = "SELECT * FROM projects WHERE project_name like '%:term%'ORDER BY projects.create_date DESC $limit"; 
    $stmt = parent::query($sql, $params); 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) : 
    $result[] = $row; 
    endwhile; 
    return $result; 
} 

Ein weiterer fehlender Parameter ist $limit Sie in Query verwendet, aber nicht an Funktion übergeben?

Mit $limit als 2. Parameter standardmäßig auf 10 Zeilen:

public function search_project_name($term, $limit = 10){ 
    $params = array(
    ':term'=>$term); 
    $sql = "SELECT * FROM projects WHERE project_name like '%:term%'ORDER BY projects.create_date DESC $limit"; 
    $stmt = parent::query($sql, $params); 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) : 
    $result[] = $row; 
    endwhile; 
    return $result; 
} 
Verwandte Themen