2016-05-17 11 views
2

Ich habe auf einer Website für einen Klassenkontext gearbeitet und ich mache ein Suchfeld, das mysql Datenbanktabelle geht und ein passendes Ergebnis zurückgibt.Suche auf mysql php

Ich mache diesen Code, aber es funktioniert nicht und der Fehler ist wie "Array zu String-Konvertierung" Ich habe stundenlang gesucht und kann keine Lösung finden. Hier ist mein Code:

<?php 
if(!empty($_POST)){ 

    $searchstring['string'] = $_POST['string']; 
    $productManager = new ProductManagement(); 

    $results = $productManager->searchProduct($searchstring); 

    if (!$results) { 
     echo "nothing found"; 
    } else { 
     while($row = $results->fetch_array(MYSQLI_ASSOC)) { 

      echo ' 


      <div class="col-sm-4 col-lg-4 col-md-4"> 
       <div class="thumbnail"> 
        <img src="'. $row ['image'] .'" alt="" width="320px" weight="150px"> 
        <div class="caption"> 
         <h4 class="pull-right">€'. $row ['price'] .'</h4> 
         <h4><a href="#">'. $row ['name'] .'</a> 
         </h4> 
         <p><strong>Size:</strong> '. $row ['size'] .'</p> 
         <p class="pull-right"><a class="btn btn-info" href="view.php?id='. $row ['id_shirt'] .'" role="button">Ver</a></p> 
        </div> 
       </div> 
      </div> 

      '; 

     } 
    } 
} 

und:

public function searchProduct($searchstring) 
{ 
    $results = $this->_database->performQuery("SELECT * FROM `shirts` WHERE name LIKE '%".$searchstring."%'"); 
    return($results); 

} 

Ich hoffe, dass Sie mir helfen können, Dank!

+0

Welche Linie den Fehler verursacht? – Mike

+0

Wie der Fehler sagt, haben Sie das Array 'searchstring' erstellt und dann versucht, es wie eine Zeichenfolge in Ihrem SQL zu verwenden. –

+0

ist auf öffentliche Funktion, in der Query-Zeile. –

Antwort

3

Verwenden Sie einfach diese:

$searchstring = $_POST['string']; 

dieser insted:

$searchstring['string'] = $_POST['string']; 
0

Wie in meinem Kommentar erwähnt, können Sie dies eine von zwei Arten beheben.

Entweder machen $searchstring eine Zeichenfolge wie:

$searchstring = $_POST['string']; 

oder Ihre SQL ändern Sie den Array-Wert verwenden Sie wählten:

$results = $this->_database->performQuery("SELECT * FROM shirts WHERE name LIKE '%".$searchstring['string']."%'"); 
+1

Dies betrifft nicht die Sicherheitsanfälligkeit durch SQL-Injektion. Sie sollten die vom Benutzer bereitgestellten Daten niemals direkt in eine Abfrage einfügen. – Mike

+2

Wie @Mike erwähnt, für jeden produktionswürdigen Code möchten Sie Ihre Abfragen wie zu parametrisieren: http://StackOverflow.com/Questions/26543097/Mysqli-Bind-Parameter-like-with-Wildcard –

+0

Vielen Dank, ich wusste nicht über das und Sinn machen, das werde ich mir merken :) –