无法提交到数据库

时间:2014-04-11 11:23:11

标签: php mysql

使用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;

有人可以帮助我并告诉我我做错了什么?感谢。

2 个答案:

答案 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。另请查看链接主题