我是编码的新手。我只是为我的旅行社创建新的会员数据,当这段代码运行不顺利时,我很困惑。当我第一次在mysqli中使用这个代码4行时运行良好,但是当我尝试复杂数据时,它没有运行。
这里是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 :(得分:0)
错误消息说明了一切:
警告:mysqli_stmt :: bind_param():变量数量与预备语句中的参数数量不匹配
您的查询本身包含32个问号,其中您的bind参数填充前31个参数但不填充最后一个参数,id
你必须在bind_param的字符串变量中添加i
,然后在所有其他变量后面添加包含id值的变量