我有这个PHP脚本:
$query = "UPDATE event_rsvp SET event_note = '" . $_POST[note] . "', event_rsvp_type_id = '" . $_POST[rsvpId] . "' WHERE user_id = '" . $_POST[userId] . "' AND event_id = '" . $_POST[eventId] . "'";
$result = $mysqli->$query;
echo $query;
回声给了我这个:
UPDATE event_rsvp SET event_note = 'test',
event_rsvp_type_id = '4'
WHERE user_id = '1' AND event_id = '1'
问题是只有event_rsvp_type_id在数据库中更新,event_note不是。 但是,如果我复制这个echo-ed查询并将其直接粘贴到adminer或phpmyadmin中,它可以正常工作并按预期更新注释。
有任何帮助吗?谢谢!
答案 0 :(得分:1)
请尝试以下代码:
$query = $mysqli->prepare("UPDATE event_rsvp SET `event_note`=?, `event_rsvp_type_id`=? WHERE `user_id`=? AND `event_id`=?");
$query->bind_param("siii", $_POST['note'], $_POST['rsvpId'], $_POST['userId'], $_POST['eventId']);
$query->execute();
你真正的问题是你错过了变量的单引号,而$mysqli->$query
没有任何意义,$query
部分不是变量,它应该只是{ {1}}。我将您的代码转换为使用预准备语句,希望这样可以让您了解它们的使用方式,同时为您提供方式更高的安全性。