php插入准备好的stmt

时间:2015-12-04 22:49:33

标签: php mysql model-view-controller prepared-statement

我的代码如下:

$sql_ = $this->db->prepare("SELECT * FROM user");
        $sql_->execute();
        $user = $sql_->fetchAll();

        $sql_insert_blog = $this->db->prepare("INSERT INTO
                                              blog
                                              (blog_title,blog_author,blog_content,blog_tags,blog_create,blog_update)
                                              VALUES
                                              (:1,:2,:3,:4,:5,:6)");
        $sql_insert_blog->execute(array(
                                        ":1"=>$title,
                                        ":2"=>$author,
                                        ":3"=>$content,
                                        ":4"=>$tags,
                                        ":5"=>$date_create,
                                        ":6"=>$date_update
                                        ));

所以第一个sql语句是证明数据库coneccion是否处于活动状态。它在我使用

时有效
print_r($user)

第二个是未执行的陈述。

我有一个控制器在模型上调用此函数,并将表单中的所有信息提供给此函数,如

function newBlogEntry()


{

$title = $_POST["input_blog_title"];
$author = $_POST["input_blog_author"];
$content = $_POST["input_blog_content"];
$tags = $_POST["input_blog_tags"];
$date_create = date('m/d/Y h:i:s a', time());
$date_update = $date_create;

$this->model->newBlogEntry($title,$author,$content,$tags,$date_create,$date_update);


}

实际上调用了该模型的函数。我可以从db中选择所有用户。

我已经检查了所有参数,并且每个参数都可以为null,因此,即使表单是emtpy,它也应该是数据库中的插入(这仅用于测试)。

但数据库中没有条目......

所以我的问题是:我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

看起来MySQL并不喜欢你的日期值。根据文档,MySQL中date-as-strings的默认格式为YYYY-MM-DD HH:MM:SS;看起来像这样的字符串将自动解析为日期。

答案 1 :(得分:0)

使用(?,?,?,?,?,?)代替(:1,:2,:3,:4,:5,:6)

$sql_insert_blog->execute(array($title, $author, $content, $tags, $date_create, $date_update));

和 日期应为Y-m-d H:i:s php date()格式

的字符串