没有PDO错误,表单可以正确获取值,但我从未看到表中插入任何数据。
<?php
//complete code for controllers/admin/editor.php
//include class definition and create an object
include_once "models/Blog_Entry_Table.class.php";
$entryTable = new Blog_Entry_Table($db);
//was editor form submitted?
$editorSubmitted = isset($_POST['action']);
if ($editorSubmitted) {
$buttonClicked = $_POST['action'];
//was "save" button clicked
$insertNewEntry = ($buttonClicked === 'save');
if ($insertNewEntry) {
//get title and entry data from editor form
$title = $_POST['title'];
$entry = $_POST['entry'];
//save the new entry
$entryTable->saveEntry($title, $entry);
}
}
//load relevant view
$editorOutput = include_once "views/admin/editor-html.php";
return $editorOutput;
//表单html代码。
<?php
return"
<form methond='post' action='admin.php?page=editor' id='editor'>
<fieldset>
<legend>New Entry Submission</legend>
<label>Title</label>
<input type='text' name='title' maxlength='150' />
<label>Entry</label>
<textarea name='entry'></textarea>
<fieldset id='editor-buttons'>
<input type='submit' name='action' value='save' />
<input type='submit' name='action' value='delete' />
</fieldset>
</fieldset>
</form>
";
<?php
//complete code listing for models/Blog_Entry_Table.class.php
class Blog_Entry_Table{
private $db;
//notice there are two underscore characters in __construct
public function __construct($db){
$this->db = $db;
}
public function saveEntry($title, $entry){
$entrySQL = "INSERT INTO blog_entry ( title, entry_text )
VALUES ( '$title', '$entry' )";
$entryStatement = $this->db->prepare($entrySQL);
try {
$entryStatement->execute();
}
catch (Exception $e) {
$msg = "<p>You tried to run this sql: $entrySQL<p>
<p>Exception: $e</p>";
trigger_error($msg);
}
}
}
// admin。 php是我最初输入的网页。
<?php
error_reporting(E_ALL);
ini_set("display_errors",1);
include_once "models/Page_Data.class.php";
$pageData=new Page_Data();
$pageData->title="PHP/MySQL blog demo";
$pageData->addCSS("css/blog.css");
//$pageData->content="<h1>YES!</h1>";
$pageData->content=include_once "views/admin/admin-navigation.php";
$dbInfo="mysql:host=localhost;dbname=simple_blog";
$dbUser="root";
$dbPassword="root";
$db=new PDO($dbInfo,$dbUser,$dbPassword);
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$navigationIsClicked=isset($_GET['page']);
if($navigationIsClicked){
$contrl=$_GET['page'];
}else{
$contrl="editor";
}
$pageData->content.=include_once "controllers/admin/$contrl.php";
$page=include_once "views/page.php";
echo $page;
如果我提交一些测试字符串,则chrome网络会显示我提交的内容,并且这些报告没有错误(可能是我错了)。如果我转到相应的表,则数据库中没有任何数据更改,它表明“ MySQL返回了一个空结果集(即零行)。”一一列出。
今天的日志:
[2018年9月11日星期二08:40:12.935566] [core:warn] [pid 15448:tid 852] AH00098:pid文件C:/phpStudy/PHPTutorial/Apache/logs/httpd.pid 已覆盖-不干净地关闭了先前的Apache运行?
[2018年9月11日星期二08:40:13.061936] [mpm_winnt:notice] [pid 15448:tid 852] AH00455:Apache / 2.4.23(Win32)OpenSSL / 1.0.2j PHP / 5.5.38 已配置-恢复正常操作
[2018年9月11日星期二08:40:13.061936] [mpm_winnt:notice] [pid 15448:tid 852] AH00456:服务器内置:2016年7月1日16:42:20
[2018年9月11日星期二08:40:13.061936] [core:notice] [pid 15448:tid 852] AH00094:命令行: 'C:\ phpStudy \ PHPTutorial \ Apache \ bin \ httpd.exe -d C:/ phpStudy / PHPTutorial / Apache'
[2018年9月11日星期二08:40:13.568497] [mpm_winnt:notice] [pid 15448:tid 852] AH00418:父级:创建子进程21416
[2018年9月11日星期二08:40:14.525578] [mpm_winnt:notice] [pid 21416:tid 692] AH00354:孩子:启动了150个工作线程。
好吧,如果我将表单的方法从“ post”更改为“ get”,并将变量从“ $ _POST”更改为“ $ _GET”,它运行良好,我可以看到插入数据库中的数据正确,但是为什么发布方法不正确,为什么get方法可以?
答案 0 :(得分:0)
好吧,当我从那本书中获得源代码后,我就知道了原因。
这是因为我写错了“方法”,所以我将“方法”写为“方法”。
//the form html code.
<?php
return"
<form methond='post' action='admin.php?page=editor' id='editor'>
仅此而已,这都是我的错。