2016-03-30 5 views
0

Ich bin ein Neuling in der Programmierung. Ich erstelle gerade neue Mitgliederdaten für mein Reisebüro, ich bin verwirrend, wenn dieser Code nicht gut läuft. Wenn ich diesen Code zum ersten Mal für 4 Zeilen in mysqli verwende, läuft es gut, aber wenn ich nach komplexen Daten suchte, läuft es nicht.Warnung: mysqli_stmt :: bind_param(): Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter in der vorbereiteten Anweisung überein 5

hier ist mysqli Code:

if(isset($_GET['id'])): 
if(isset($_POST['submit'])): 
     $stmt = $mysqli->prepare("UPDATE jamaah SET berangkatbulan=?, berangkattahun=?,bulandaftar=?, tahundaftar=?, nomorktp=?, namapertama=?, 
               namakedua=?, namaketiga=?, namaayahkandung=?, tempattanggallahir=?, 
               umur=?, jeniskelamin=?, kewarganegaraan=?, alamatlengkap=?, rtrw=?, kelurahan=?, kecamatan=?, 
               kabupaten=?, provinsi=?, kodepos=?, nomortelepon=?, 
               nomerhp=?, email=?, alamatjakarta=?, pendidikan=?, pekerjaan=?, pernahhaji=?, namamahram=?, hubunganmahram=?, 
               golongandarah=?, pilihpaket=? WHERE id=?"); 
     $stmt->bind_param('sssssssssssssssssssssssssssssss', $berangkatbulan, $berangkattahun, $bulandaftar, $tahundaftar, $nomorktp, $namapertama,$namakedua, $namaketiga, $namaayahkandung, 
           $tempattanggallahir, $umur, $jeniskelamin, $kewarganegaraan, $alamatlengkap, $rtrw, $kelurahan, $kecamatan, $kabupaten,$provinsi,$kodepos, 
           $nomortelepon,$nomerhp,$email, $alamatjakarta,$pendidikan, $pekerjaan, $pernahhaji, $namamahram,$hubunganmahram, $golongandarah, $pilihpaket); 

     $berangkatbulan=$_POST['berangkatbulan']; 
     $berangkattahun=$_POST['berangkattahun']; 
     $bulandaftar=$_POST['bulandaftar']; 
     $tahundaftar=$_POST['tahundaftar']; 
     $nomorktp=$_POST['nomorktp']; 
     $namapertama=$_POST['namapertama']; 
     $namakedua=$_POST['namakedua']; 
     $namaketiga=$_POST['namaketiga']; 
     $namaayahkandung=$_POST['namaayahkandung']; 
     $tempattanggallahir=$_POST['tempattanggallahir']; 
     $umur=$_POST['umur']; 
     $jeniskelamin=$_POST['jeniskelamin']; 
     $kewarganegaraan=$_POST['kewarganegaraan']; 
     $alamatlengkap=$_POST['alamatlengkap']; 
     $rtrw=$_POST['rtrw']; 
     $kelurahan=$_POST['kelurahan']; 
     $kecamatan=$_POST['kecamatan']; 
     $kabupaten=$_POST['kabupaten']; 
     $provinsi=$_POST['provinsi']; 
     $kodepos=$_POST['kodepos']; 
     $nomortelepon = $_POST['nomortelepon']; 
     $nomerhp=$_POST['nomerhp']; 
     $email=$_POST['email']; 
     $alamatjakarta=$_POST['alamatjakarta']; 
     $pendidikan=$_POST['pendidikan']; 
     $pekerjaan=$_POST['pekerjaan']; 
     $pernahhaji=$_POST['pernahhaji']; 
     $namamahram=$_POST['namamahram']; 
     $hubunganmahram=$_POST['hubunganmahram']; 
     $golongandarah=$_POST['golongandarah']; 
     $pilihpaket=$_POST['pilihpaket']; 
     $id = $_POST['id']; 

     if($stmt->execute()): 
      echo "<script>location.href='index.php'</script>"; 
     else: 
      echo "<script>alert('".$stmt->error."')</script>"; 
     endif; 
endif; 
$res = $mysqli->query("SELECT * FROM jamaah WHERE id=".$_GET['id']); 
$row = $res->fetch_assoc(); 

wenn ich eine Nachricht Update Mysqli klicken ist:

**Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in D:\xampp\htdocs\datarematour\admin\update.php on line 11** 

und dies ist meine Probe PHP-Codes:

<label for="kewarganegaraan">Kewarganegaraan</label> 
          <select name="kewarganegaraan" class="form-control"> 
          <option>-Pilih--</option> 
          <option value="<?php echo $row['kewarganegaraan'] ?>">Warga Negara Indonesia</option> 
          <option>Warga Negara Asing</option> 
          </select> 

<div class="col-xs-6 col-md-4 form-group"> 
          <label for="namapertama">Nama Pertama</label> 
          <input type="text" name="namapertama" value="<?php echo $row['namapertama'] ?>" class="form-control"> 
         </div> 
+0

Sie verpassen die 'id' bind enthält. – radoh

Antwort

0

Die Fehlermeldung sagt alles:

Warnung: mysqli_stmt :: bind_param(): Anzahl der Variablen Anzahl von Parametern keine Markierungen in vorbereitete Anweisung

Ihre Abfrage selbst enthält 32 Frage entsprechen, wo Ihre bind Parameter die ersten 31 Parameter füllt aber nicht die letzte, die ID

Sie haben eine i auf die String-Variable von bind_param hinzuzufügen und dann die Variable den ID-Wert hinter allen anderen Variablen