PHP + mySQL - 不会从PHP更新文本字段,但会从具有相同查询的adminer更新

时间:2017-08-09 20:53:43

标签: php mysql mysqli

我有这个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中,它可以正常工作并按预期更新注释。

有任何帮助吗?谢谢!

1 个答案:

答案 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}}。我将您的代码转换为使用预准备语句,希望这样可以让您了解它们的使用方式,同时为您提供方式更高的安全性。