有没有办法在 php 准备语句中设置字段名称,而不仅仅是设置值,例如,
$stmt = $mysqli->prepare("UPDATE movies SET filmName = ?,
filmDescription = ?,
filmImage = ?,
filmPrice = ?,
filmReview = ?
WHERE filmID = ?");
$stmt->bind_param('sssdii',
$_POST['filmName'],
$_POST['filmDescription'],
$_POST['filmImage'],
$_POST['filmPrice'],
$_POST['filmReview'],
$_POST['filmID']);
$stmt->execute();
$stmt->close();
有没有更简单的方法可以做到这一点?例如,有没有办法我可以做类似的事情
$stmt->bind_param($_POST);
所以它用正确的名称绑定所有内容?
我希望这有所帮助。我没有测试,但是如果我错过了什么,请发表评论,我会编辑。
$sql = "UPDATE
movies
SET
filmName = ?,
filmDescription = ?,
filmImage = ?,
filmPrice = ?,
filmReview = ?
WHERE
filmID = ?";
$arrayFields = array("filmName" => "s"
, "filmDescription" => "s"
, "filmImage" => "s"
, "filmPrice" => "d"
, "filmReview" => "i"
, "filmID" => "i");
$stmt = $mysqli->prepare($sql);
foreach($_POST as $key=>$val) {
if(array_key_exists ( $key , $arrayFields )) {
$stmt->bind_param($arrayFields[$key], $_POST[$key]);
}
}
$stmt->execute();
$stmt->close();