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