2016-03-30 66 views
0

我是編碼方面的新手。我只是爲我的旅行社創建新的會員數據,當這個代碼運行不好時,我很困惑。當我第一次在mysqli中使用這段代碼時,它運行的很好,但是當我嘗試複雜的數據時,它沒有運行。警告:mysqli_stmt :: bind_param():變量數量與預準備語句中的參數數量不匹配5

這裏的mysqli代碼:

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(); 

當我點擊更新mysqli的消息是:

**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** 

,這是我的示例PHP代碼:

<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

你錯過了'id'綁定背後的ID變量。 – radoh

回答

0

錯誤信息這一切說:

警告:mysqli_stmt :: bind_param():變量數不準備語句相匹配的參數個數

您查詢本身包含在您綁定參數填充第一31個參數,但不是32問號最後一節,該ID

你有一個i添加到bind_param的字符串變量,然後將含有值所有其他變量

相關問題