2016-05-10 8 views
0

Das ist mein PHP-Code:aktualisieren PHP vorbereiten bindParam

<?php 
    if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
     $UpdateChecklist = 'UPDATE checklists SET ADMIN_ID=?, COMPUTER_ID=? WHERE id=?'; 
     $stmtChecklist = $connection->prepare($UpdateChecklist); 
     $stmtChecklist->bind_param('ii', $_POST['ADMIN_ID'], $_POST['COMPUTER_ID']); 

     $isUpdate = $stmtChecklist->execute(); 
     $lastUpdateId = mysqli_insert_id($connection); 

     $stmtChecklist->close(); 

     $UpdateInstalledProgram = 'UPDATE checklist_programs SET CHECKLIST_ID=?, PROGRAM_ID=? WHERE id = ?'; 
     $stmtProgramId = $connection->prepare($UpdateInstalledProgram); 
     $stmtProgramId->bind_param('ii', $lastUpdateId, $programId); 
     foreach ($_POST['PROGRAM_ID'] as $program) { 
      $programId = $program; 
      $stmtProgramId->execute(); 
     } 
     $connection->close(); 
     if ($isUpdate) { 
      header('Location: OverViewCheckList.php'); 
      exit(0); 
     } 
    } 
?> 

und ich habe einige Fehler, die ich weiß nicht, wie es zu beheben:

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\checklist\updateChecklist.php on line 34

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\checklist\updateChecklist.php on line 44

Warning: mysqli::query(): Couldn't fetch mysqli in C:\xampp\htdocs\checklist\updateChecklist.php on line 57

Fatal error: Call to a member function fetch_assoc() on null in C:\xampp\htdocs\checklist\updateChecklist.php on line 59

+0

Sie erfordern (3) Werte in Ihrem Update Abfrage, aber Sie haben nur (2) Elemente in Ihrem 'bind_param'. – rhavendc

Antwort

3

In Ihrem sowohl Ihre Fragen Sie verwenden 3? 's aber nur 2 Variablen binden.

Abfrage 1:

$UpdateChecklist = 'UPDATE checklists SET ADMIN_ID=?, COMPUTER_ID=? WHERE id=?'; 
$stmtChecklist = $connection->prepare($UpdateChecklist); 

$stmtChecklist->bind_param('ii', $_POST['ADMIN_ID'], $_POST['COMPUTER_ID']); /* Here*/ 

Abfrage 2:

$UpdateInstalledProgram = 'UPDATE checklist_programs 
SET CHECKLIST_ID=?, PROGRAM_ID=? WHERE id = ?'; 
$stmtProgramId = $connection->prepare($UpdateInstalledProgram); 

$stmtProgramId->bind_param('ii', $lastUpdateId, $programId); /* Here */ 

Sie brauchen eine dritte Variable zB hinzuzufügen:

$stmtChecklist->bind_param('iii', $_POST['ADMIN_ID'], $_POST['COMPUTER_ID'], $id3); 
$stmtProgramId->bind_param('iii', $lastUpdateId, $programId, $id3); 
+0

@CherryDT er hat 3? S, so dass Sie 3 bindet, z. '$ stmtProgramId-> bind_param ('iii', $ lastUpdateId, $ programId, $ id3)' ii ist nur 2 Bindungen – Matt

+0

richtig, ich war für eine Sekunde verwirrt. nvm. das ist die richtige Antwort (und wahrscheinlich auch für die erste Abfrage). – CherryDT

+0

Das ist das Problem in beiden Abfragen. – clemens321