所以我有这个更新语句,当我转储$ _POST变量时,我得到了我想要的输出。
$stmt = $dbConnectionW->prepare("UPDATE members SET
fname='". mysqli_real_escape_string($dbConnectionW, $_POST['fname']) ."',
sname='". mysqli_real_escape_string($dbConnectionW, $_POST['sname']) ."',
gender='". mysqli_real_escape_string($dbConnectionW, $_POST['gender']) ."',
nationality='". mysqli_real_escape_string($dbConnectionW, $_POST['nation']) ."',
year='". mysqli_real_escape_string($dbConnectionW, $_POST['year']) ."',
dep1='". mysqli_real_escape_string($dbConnectionW, $_POST['dep1']) ."',
dep2='". mysqli_real_escape_string($dbConnectionW, $_POST['dep2']) ."',
f_pos='". mysqli_real_escape_string($dbConnectionW, $_POST['f_pos']) ."',
f_region='". mysqli_real_escape_string($dbConnectionW, $_POST['f_region']) ."',
exp_comp='".$comp."',
exp_dep='".$comp_dep."',
shareinfo='".$shareinfo."',
interest='".$interest."',
userconfirm = '1'
WHERE confirmcode = '".$passkey."';");
$stmt->execute();
if (!$stmt)
{
die('Error: ' . mysqli_error($dbConnectionW));
}
$smst-> close(); }}} mysqli_close($dbConnectionW);
}
基本上问题是它不会更新数据库!它没有错误,但在sql / php尝试后数据库没有更新。
有人能看到我的代码有什么问题吗?导致我的数据库无法更新的原因是什么?我过去一小时一直在这里开始。
答案 0 :(得分:2)
您不需要在预准备语句中转义变量,而是应该在执行语句之前绑定变量。列名也应该在`标记内。
$stmt = $dbConnectionW->prepare("UPDATE members SET
`fname`=?,
`sname`=?,
`gender`=?,
`nationality`=?,
`year`=?,
`dep1`=?,
`dep2`=?,
`f_pos`=?,
`f_region`=?,
`exp_comp`=?,
`exp_dep`=?,
`shareinfo`=?,
`interest`=?,
`userconfirm`=?
WHERE `confirmcode`=?");
$stmt->bind_param('ssssissssssssis',$_POST['fname'],$_POST['sname'],$_POST['gender'],...);
$stmt->execute();
为了简洁,我还没有包含所有绑定参数。
希望这有帮助。