2015-04-23 7 views
6

Sto provando a selezionare valori in cui un altro valore POST è un array, non so cosa c'è di sbagliato nella mia query dandomi questo errore. Sto cercando di sapere quali corsi sono appena stati aggiunti alla tabella. Ho cinque ingressi nel modulo.Come selezionare valori in cui un altro valore è un array?

Notice: Trying to get property of non-object in C:\Apache\htdocs\xxx\addcourse.php on line 262 

Ecco il mio codice

<?php 
    if(isset($_POST['Submit'])) { 

     $code= isset($_POST['code']) ? $_POST['code'] : ''; 
     $coursecode = isset($_POST['coursecode']) ? $_POST['coursecode'] : ''; 
     $both=$code[$x] .' '. $coursecode[$x]; 

     $sqlcourses = "SELECT * FROM courses where course_code='$both' ORDER BY course_id DESC LIMIT 5 "; 
     $resultcourses = $mysqli->query($sqlcourses); 


     if ($resultcourses->num_rows > 0) { 


      while($row = $resultcourses->fetch_assoc()) { 

       ?> 
       </p> 
       <p>&nbsp;</p> 
       <p>&nbsp; </p> 
       <table width="415" border="0"> 
       <tr> 
       <?php 
       $courses=$row["course_code"]; 
       echo $courses; 
       ?> 
        </div> 
       </tr> 
        </table> 
       <?php 
      } 
     } 
    } 
?> 
+0

E quale linea di codice è 262? – Misunderstood

+0

Ho appena notato che ho bisogno di modificare $ sia per '$ entrambi' nella query. Non conoscere errori, ma non mi dai alcun risultato? –

+0

La tua richiesta non funziona. A prima vista, '$ both' contiene uno spazio -' $ both = $ code [$ x]. ' '. $ coursecode [$ x]; ', quindi deve essere racchiuso tra virgolette -' ... dove course_code = '$ entrambi' ... '. – Sean

risposta

0

In primo luogo, si costruisce una serie di codici del corso che si desidera recuperare; Sto lasciando fuori i controlli di confine per semplicità:

$codes = []; 
foreach ($_POST['code'] as $k => $code) { 
    $codes[] = $code . ' ' . $_POST['coursecode'][$k]; 
} 

Poi, si prepara la dichiarazione che si intende utilizzare:

$stmt = $mysqli->prepare("SELECT * 
    FROM courses 
    WHERE course_code = ? 
    ORDER BY course_id DESC 
    LIMIT 5"); 

Seguito dal ciclo principale:

foreach ($codes as $code) { 
    $stmt->bind_param('s', $code); 
    assert($stmt->execute()); 

    $res = $stmt->get_result(); 
    while ($row = $res->fetch_assoc()) { 
     // ... 
    } 
} 
Problemi correlati