2017-06-06 4 views
1

Die Fehler Ich erhalte sind die folgenden: (Auch bin Echo i die Abfrage-Anweisung)MYSQL/PHP ZWEI Multiselect Dropdown-Filter (PDO)

Hinweis: Array String-Konvertierung in/home/fanati10/public_html /wp-content/themes/digital-pro/page-nflwranalyzer.php on line 75

Hinweis: Array String-Konvertierung in/home/fanati10/public_html/wp-content/themes/Digital-pro/Seite -nflwanalyzer.php in Zeile 79
* SELECT * FROM WR_TeamAnalyzer WHERE TMID =? UND WKID = *

hier meine PHP-Datei

if(isset($_POST['submit'])) 
    { 
     require_once(get_stylesheet_directory() . '/config/config.php'); 
     if(isset($_POST['check'])) { 
     $nflposs = ""; 
     foreach($_POST['check'] as $val => $text_field) { 
      $nflposs.=$text_field.", "; 
     } 
      $nflpossint = rtrim($nflposs, ', '); 
      $nflposs = explode(',', $nflpossint); 
      $placeholders = rtrim(str_repeat('?, ', count($nflposs)), ', '); 
      $filter[] = "TMID = $placeholders"; 
      $values[] = $nflpossint; 
     } 
     if(isset($_POST['wk'])) { 
     $wkid = ""; 
     foreach($_POST['wk'] as $val => $text_field) { 
      $wkid.=$text_field.", "; 
     } 
      $wkidint = rtrim($wkid, ', '); 
      $wkid = explode(',', $wkidint); 
      $placeholders2 = rtrim(str_repeat('?, ', count($wkid)), ', '); 
      $filter[] = "WKID = $placeholders2"; 
      $values[] = $wkidint; 
     } 
     $sql="SELECT * FROM WR_TeamAnalyzer WHERE " . implode(' AND ', $filter); 
     echo ($sql); 
     $selectStmt = $dbcon->prepare($sql); 
     $selectStmt->execute($values); 
     $rows = $selectStmt->fetchAll(); 
    $tableContent = ''; 
    foreach ($rows as $row){ 
    $tableContent = $tableContent.'<tr>'. 
+0

, wenn ich drucken, um die Arrays i erhalten print_r ($ filter); Array ([0] => TMID =? [1] => WKID =?,?) print_r ($ werte); Array ([0] => 3 [1] => 3, 4) –

Antwort

1

Wenn Sie = in einer Abfrage verwenden wird es eine Zeichenfolge erwarten. Aber Sie übergeben ein Array (values) in Parametern. Ich bin nicht sicher, was Sie versuchen hier zu erreichen, aber wenn Sie in einem Array überprüfen möchten, ändern diese beiden Zeilen im Code wie folgt:

TMID IN $placeholders 
WKID IN $placeholders2 

Ihre letzte Abfrage sollte wie folgt aussehen:

SELECT * FROM WR_TeamAnalyzer WHERE TMID IN (?) AND WKID IN (?) 
+0

was du gepostet hast, erlaubt nur nach einer Option pro Spalte zu filtern ... also basierend auf deiner Antwort würde die Abfrage so aussehen .... ..................................... $ sql = "SELECT * FROM WR_TeamAnalyzer WHERE TMID IN (1) UND WKID IN (2) "; –

+0

Was ich will, ist die Abfrage, um mehrere Auswahlen pro Dropdown zu filtern ..... Hier habe ich die Abfrage manuell eingegeben, wie ich es filtern möchte .................... ....................... $ sql = "SELECT * FROM WR_TeamAnalyzer WHERE TMID IN (1, 2) UND WKID IN (2, 3)"; –

0

Dies ist, was ich mit

Änderung kam:

$filter[] = "TMID IN $placeholders"; 
$values = $nflpossint; 

&

$filter[] = "WKID IN $placeholders2"; 
$values2 = $wkidint; 

&

$sql="SELECT * FROM WR_TeamAnalyzer WHERE TMID IN ($values) AND WKID IN ($values2)"; 
$selectStmt = $dbcon->prepare($sql); 
$selectStmt->execute(); 
+0

Sie brauchen nicht einmal den $ Filter [] (s) –