[英]Inserting into mysql database with php
我想這是一個簡單的問題,我根本無法找出原因或原因。 (希望這不是重復的。)
我的目的是從輸入和文本區域中獲取信息,並將其插入數據庫中適當的表中,該表已經存在。 但是,在單擊提交並且沒有收到任何錯誤之后,沒有任何內容添加到數據庫中。
這是我的“視圖”(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>
這是我的“索引”(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";
?>
最后是我的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);
}
}
?>
當您使用單引號時,它不會擴展字符串中的變量。 另外,如果參數不是整數,則必須用引號引起來。 因此,查詢分配應如下所示:
$query = "INSERT INTO journals
(entry_date, contents)
VALUES
('$datetitle', '$journalcontent')";
也就是說,您確實應該使用綁定參數將值傳遞給查詢。 像這樣:
$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();
首先,您應該打開PDO的錯誤報告; 我會用
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
除非$datetitle
和$journalcontent
都是整數,否則查詢將由於SQL語法錯誤和缺少字符串引用而失敗。 您應該對查詢參數化,以避免出現此問題以及可能的注入。
$query = <<<SQL
INSERT INTO journals
(entry_date, contents)
VALUES
(?, ?)
SQL;
$statement = $db->prepare($query);
$statement->execute(array($datetitle, $journalcontent));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.