2016-11-21 2 views
3

Ich habe den Code untenWie foreach() verwenden, richtig

foreach ($_POST['courses'] as $course) { 
     $sql1 = "SELECT id FROM `courses` where title='".$course."'"; 
     $course_id = mysqli_query($connection, $sql1); 
    $sql2=mysqli_query($connection,"INSERT INTO `ett`.`course-teacher` (`courses_id` ,`teacher-id`) VALUES ('".$teacher_id."`,`".$course_id."`)"); } 

Kurse ist eine Mehrfachauswahl HTML-Tag, und ich versuche, im Grunde alle Kurse auszuwählen, die ausgewählt wurden.

aber es gibt mir die folgenden Fehler

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\wamp\www\ETT Logo\Controlpanel\uploadteacher.php on line 36

Beachten Sie, dass Zeile 35 die zweite Zeile oben im Code ist.

+3

Es scheint unwahrscheinlich, dass Ihre zweite Zeile diesen Fehler verursacht. Wie sieht der umgebende Code aus? Und Sie haben ein SQL-Injection-Problem, sollten Sie stattdessen eine vorbereitete Anweisung verwenden. – jeroen

Antwort

4

mysqli_query() kehren Sie ein Ergebnisobjekt und nicht nur das Feld, das Sie wollten. Sie müssen die Ergebnisdaten abrufen - das implizite Casting in String wird nicht funktionieren.

foreach ($_POST['courses'] as $course) { 
     $sql1 = "SELECT id FROM `courses` where title='".$course."'"; 
     $result = mysqli_fetch_assoc(mysqli_query($connection, $sql1)); 
     $result2 = mysqli_fetch_assoc(mysqli_query($connection,"INSERT INTO `ett`.`course-teacher` (`courses_id` ,`teacher-id`) VALUES ('".$teacher_id."`,`".$result['id']."`)"); } 
2

Versuchen Sie dies, Sie fehlten einige Zitate und einige an der falschen Stelle.

foreach($_POST['courses'] as $course) 
{ 
    $sql = "SELECT id FROM `courses` where title='".$course."'"; 
    $course_id = mysqli_query($connection, $sql); 
} 
+0

Aktualisierte den obigen Code, fügte Ihre Eingabe hinzu und gab mir immer noch diesen Fehler, den ich oben gepostet habe –