用php插入mysql数据库

cap*_*rad 0 php mysql sql database sql-insert

我想这是一个简单的问题,我根本找不到在哪里或为什么.(希望这不是重复的)..

我的目的是从输入和textarea中获取信息,并将其插入到我的数据库中,进入已经存在"journals"的正确表中.然而,在点击提交并且没有收到任何错误之后,没有任何内容添加到数据库...想法?

这是我的"观点"(post.php):

<fieldset>
    <form method="post" action="push.php">
        <input type="text" name="datetitle" /><br />
        <textarea name="journalcontent"></textarea><br />
        <input type="submit" />
    </form>
    <?php echo $datetitle ?>
    <p><?php $output ?></p>
</fieldset>
Run Code Online (Sandbox Code Playgroud)

这是我的"索引"(push.php),省略了明显的部分:

<?php

$dsn = '*';
$username = '*';
$password = '*';

include "model.php";

try {
    $db = new PDO($dsn, $username, $password);
} catch (PDOException $exc) {

    echo 'connection failed';
    exit;
}

echo 'goodzo';

$datetitle = $_POST['datetitle'];
$journalcontent = $_POST['journalcontent'];

if (!empty($datetitle)) {
    $output = add_entry($datetitle, $journalcontent);
} else {
    $output = "empty";
}

include "post.php";

?>
Run Code Online (Sandbox Code Playgroud)

最后我的model.php:

<?php
function add_entry($datetitle, $journalcontent) {
    global $db;
    $query = 'INSERT INTO journals
                (entry_date, contents)
              VALUES
                 ($datetitle, $journalcontent)';
    try {
        $statement = $db->prepare($query);
        $statement->execute();
        $statement->closeCursor();
    } catch (PDOException $e) {
        $error_message = $e->getMessage();
        display_db_error($error_message);
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

Jam*_*ess 5

使用单引号时,它不会扩展字符串中的变量.此外,如果参数不是整数,则需要使用引号.因此查询分配应如下所示:

$query = "INSERT INTO journals
            (entry_date, contents)
          VALUES
             ('$datetitle', '$journalcontent')";
Run Code Online (Sandbox Code Playgroud)

也就是说,您应该使用绑定参数将值传递给查询.像这样的东西:

$query = 'INSERT INTO journals
            (entry_date, contents)
          VALUES
             (?, ?)';

$statement = $db->prepare($query);
$statement->bindParam(0, $datetitle, PDO::PARAM_STR);
$statement->bindParam(1, $journalcontent, PDO::PARAM_STR);
$statement->execute();
Run Code Online (Sandbox Code Playgroud)