使用MVC框架,我制作了一些用于向数据库添加信息的代码。
在Index.php(views)
<form method="post" action="<?php echo URL;?>note/updatetopic">
<select>
<option value="1">Coasts</option>
<option value="2">Energy Demand</option>
</select>
<input type="submit" name="topic_selection" value="Choose" />
</form>
上述代码旨在发布有关用户想要修改的内容的信息。
在note.php(控制器)
中public function updatetopic() {
if (isset($_POST['topic_selection'])) {
$note_model = $this->loadModel('Note');
$note_model->updatetopic($_POST['topic_selection']);
}
header('location: ' . URL . 'note');
}
上面的代码旨在从index.php中的代码中获取信息,并将其转发到运行函数的note_model。
在note_model.php(模特)中
public function updatetopic($topic_selection)
{
$topic_selection = strip_tags($topic_selection);
$sql = "INSERT INTO users (topic_revising) VALUES (:topicselected) WHERE user_id=:user_id";
$query = $this->db->prepare($sql);
$query->execute(array(':topicselected' => $topic_selection, ':user_id' => $_SESSION['user_id']));
$count = $query->rowCount();
if ($count == 1) {
return true;
} else {
$_SESSION["feedback_negative"][] = TOPIC_UPDATE_FAILED;
}
// default return
return false;
}
这是为了验证提交的信息并将其插入数据库,但输出:
$_SESSION["feedback_negative"][] = TOPIC_UPDATE_FAILED;
有人可以帮助我并告诉我我做错了什么?感谢。
答案 0 :(得分:1)
您没有为您的选择标记选择任何名称:
尝试这样:
<select name="topic">
<option value="1">Coasts</option>
<option value="2">Energy Demand</option>
</select>
现在获取yuor下拉列表的值:
if (isset($_POST['topic'])) {
$note_model = $this->loadModel('Note');
$note_model->updatetopic($_POST['topic']);
// $_POST['topic'] == 1 or 2 depends upon selection
}
你可以改变它:
<select name="topic">
<option value="coasts">Coasts</option>
<option value="Energy_Demand">Energy Demand</option>
</select>
现在你将获得所选列表项的真实值,并可以进一步移动....
答案 1 :(得分:1)
您的SQL查询将无效,因为您已标记mysql
,但不支持此类语法:
INSERT INTO users (topic_revising) VALUES (:topicselected) WHERE user_id=:user_id
基本上MySQL中没有WHERE(MySQL Insert Where query)
您应该在选择查询中检查重复,或者如果有唯一键 - 请使用ON DUPLICATE KEY
。另请查看链接主题