2016-10-11 5 views
-1

Kann mir jemand helfen, was ist das Problem mit diesem Code? Ich versuche, die abgerufenen Daten in einem Array zu speichern, und ich möchte basierend auf den Werten dieses Arrays. Ich bekomme einen Fehler von Array to string conversion. Der Datentypwert eines Arrays ist stringErhalten eines Arrays zu String-Konvertierung Fehler

Hier ist der Code.

  $sql3 ="SELECT DISTINCT subj_descr FROM subj_enrolled WHERE enroll_ref = '$ref'"; 
      $results = mysqli_query($con, $sql3); 
      $data = array(); 
       while($row = mysqli_fetch_array($results)){ 
         $data[] = array($row['subj_descr']); 
       } 


      $sql ="SELECT * FROM notification WHERE subj_descr IN ({implode(',', $data})"; 
      $result = mysqli_query($con, $sql); 

      $count = mysqli_num_rows($result); 
+0

einfach entfernen Array in Ihrer while-Schleife, Ruhe alles in Ordnung ist –

+0

Wie @Insomania vorgeschlagen entfernen Sie einfach 'Array()' 'von diesem Array ($ row [ 'subj_descr']) '; – itzmukeshy7

Antwort

0

entfernen array in Ihrem while-Schleife:

$sql3 ="SELECT DISTINCT subj_descr FROM subj_enrolled WHERE enroll_ref = '$ref'"; 
     $results = mysqli_query($con, $sql3); 
     $data = array(); 
      while($row = mysqli_fetch_array($results)){ 
        $data[] = $row['subj_descr']; 
      } 


     $sql ="SELECT * FROM notification WHERE subj_descr IN ({implode(',', $data})"; 
     $result = mysqli_query($con, $sql); 

     $count = mysqli_num_rows($result); 
+0

Fehler auf WHERE subj_descr IN ({implodieren ('', $ data}) ";. –

0

Sie sind ein multidimensional Array erstellen und so diese Aussage ändern

$data[] = array($row['subj_descr']); 

zu

$data[] = $row['subj_descr']; 

Wie SQL IN Anweisung verwendet immer ein eindimensionales Array, so dass auch Änderung in Frage where-Klausel.

Ich habe alle geändert hat, versuchen Sie bitte die folgenden Code:

<?php 
    $sql3 ="SELECT DISTINCT subj_descr FROM subj_enrolled WHERE enroll_ref = '$ref'"; 
    $results = mysqli_query($con, $sql3); 
    $data = array(); 
    while($row = mysqli_fetch_array($results)){ 
     $data[] = $row['subj_descr']; 
    } 
    $dataStr = implode(',', $data); 

    $sql ="SELECT * FROM notification WHERE subj_descr IN (".$dataStr.")"; 
    $result = mysqli_query($con, $sql); 

    $count = mysqli_num_rows($result); 
    ?> 
+0

Eine kleine Erklärung tun, um ihn zu verstehen zu machen –

+0

ich einen Fehler von' mysqli_num_rows bekommen() erwartet 1 Parameter MySQLi_Result werden, Boolean gegeben in ', aber wenn ich es in' IN ('COMPUTER PROGRAMMING 1', 'COMPUTER PROGRAMMING 2') ändern; es funktioniert? – wataru

+0

Ich habe versucht, die '$ dataStr' auf' vardump' setzen ich bekomme die Ausgabe von ' string (59) "ENGLISH 2, KUMUNIKASYON, COMPUTER PROGRAMMING 2, MATHEMATICS 2" 'der $ dataStr hat einen Wert warum ist das ein Fehler? – wataru

0

eine neue Variable erstellen und darin implodieren.

dieses

$implodeAray = implode(",", $data); 
$sql ="SELECT * FROM notification WHERE subj_descr IN ($implodeAray)"; 
+0

Ich erhalte einen Fehler von 'mysqli_num_rows() erwartet, dass Parameter 1 mysqli_result ist, boolean in ', aber wenn ich ihn in' IN (' COMPUTER PROGRAMMING 1 ',' COMPUTER PROGRAMMING 2 ') ändere; es funktioniert? – wataru

+0

ja, wenn Sie Strings in Ihrem Array haben, dann müssen Sie es mit Zitat trennen ('a', 'b', 'c'). – shubham715

+0

Ich versuche bereits die ''' – wataru

0

Sie das Element Ihres Arrays in einem anderen Array gespeichert Versuchen während Looping.

tun:

$sql3 ='SELECT DISTINCT subj_descr 
     FROM subj_enrolled 
     WHERE enroll_ref = "$ref"'; 

$results = mysqli_query($con, $sql3); 
$data = array(); 

while($row = mysqli_fetch_array($results)){ 
    //Your error was here 
    //Each elements is escaped for security reasons 
    $data[] = mysqli_escape_string($con,$row['subj_descr']);   
} 

//This implodes and puts a single quote around each element 
$dataIn= '\'' . implode('\', \'', $data) . '\''; 

$sql ="SELECT * FROM notification 
     WHERE subj_descr IN ($dataIn)"; 

$result = mysqli_query($con, $sql); 

$count = mysqli_num_rows($result); 
+0

Ich erhalte einen Fehler von 'mysqli_num_rows() erwartet, dass Parameter 1 mysqli_result ist, boolean gegeben in', aber wenn ich ihn in 'IN ('COMPUTER PROGRAMMING 1', 'COMPUTER PROGRAMMING 2') ändere; es funktioniert? – wataru

+0

ich habe versucht, die $ dataIn zu vardump setzen ich bekomme die Ausgabe von String (59) "ENGLISH 2, KUMUNIKASYON, COMPUTER PROGRAMMING 2, MATHEMATICS 2" die $ dataIn hat einen Wert, warum ist das im Erhalten eines Fehlers? – wataru

+0

@wataru Ich habe den Code aktualisiert, um jedes Element in ein einzelnes Zitat zu bringen, aber Sie müssen mysql_escape_string für jedes Element ausführen, bevor Sie das Array wie in '$ data [] = mysqli_escape_string ($ con, $ row ['subj_descr']) aufbauen. '; –

Verwandte Themen