MySQLi 更新准备语句不更新数据库
MySQLi update prepared statement not updating database
所以我有这个更新语句,当我转储 $_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 尝试后数据库不会更新。
有人能看出我的代码有什么问题吗?为什么我的数据库不会更新的一些可能原因是什么?在过去的一个小时里,我一直在做这件事。
您不需要在准备好的语句中转义变量,而是应该在执行语句之前绑定变量。此外,列名应位于 ` 标记内。
$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();
为简洁起见,我没有包含所有绑定参数。
希望对您有所帮助。
所以我有这个更新语句,当我转储 $_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 尝试后数据库不会更新。
有人能看出我的代码有什么问题吗?为什么我的数据库不会更新的一些可能原因是什么?在过去的一个小时里,我一直在做这件事。
您不需要在准备好的语句中转义变量,而是应该在执行语句之前绑定变量。此外,列名应位于 ` 标记内。
$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();
为简洁起见,我没有包含所有绑定参数。
希望对您有所帮助。