我正在尝试使用名为 PHP for Absolute Beginners 的书来学习一些PHP。我正在尝试使用WAMP和editplus实现本书中给出的一些博客设计代码。当我尝试使用PHP表单插入数据时,我得到的只是数据库表中的NULL值。这是一段用于将值插入DB的代码。
<?php
if($_SERVER['REQUEST_METHOD']=='POST'
&& $_POST['submit']=='Save Entry'
&& !empty($_POST['title'])
&& !empty($_POST['entry']))
{
// Include database credentials and connect to the database
include_once 'db.inc.php';
$db = new PDO(DB_INFO, DB_USER, DB_PASS);
// Save the entry into the database
$sql = "INSERT INTO entries (title, entry) VALUES (?, ?)";
$stmt = $db->prepare($sql);
$stmt->execute(array($title, $entry));
$stmt->closeCursor();
// Get the ID of the entry we just saved
$id_obj = $db->query("SELECT LAST_INSERT_ID()");
$id = $id_obj->fetch();
$id_obj->closeCursor();
// Send the user to the new entry
header('Location: ../admin.php?id='.$id[0]);
exit;
}
// If both conditions aren't met, sends the user back to the main page
else
{
header('Location: ../admin.php');
exit;
}
?>
当我检查apache错误日志时,我看到了:
[Sun May 27 19:21:24 2012] [error] [client 127.0.0.1] PHP Notice: Undefined
variable: title in C:\\wamp\\www\\examples\\simple_blog\\inc\\update.inc.php
on line 14, referer: http://localhost/examples/simple_blog/admin.php?id=8
[Sun May 27 19:21:24 2012] [error] [client 127.0.0.1] PHP Stack trace:, referer:
http://localhost/examples/simple_blog/admin.php?id=8
[Sun May 27 19:21:24 2012] [error] [client 127.0.0.1] PHP 1. {main}()
C:\\wamp\\www\\examples\\simple_blog\\inc\\update.inc.php:0, referer:
http://localhost/examples/simple_blog/admin.php?id=8
[Sun May 27 19:21:24 2012] [error] [client 127.0.0.1] PHP Notice: Undefined
variable: entry in C:\\wamp\\www\\examples\\simple_blog\\inc\\update.inc.php
on line 14, referer: http://localhost/examples/simple_blog/admin.php?id=8
[Sun May 27 19:21:24 2012] [error] [client 127.0.0.1] PHP Stack trace:, referer:
http://localhost/examples/simple_blog/admin.php?id=8
[Sun May 27 19:21:24 2012] [error] [client 127.0.0.1] PHP 1. {main}()
C:\\wamp\\www\\examples\\simple_blog\\inc\\update.inc.php:0, referer:
http://localhost/examples/simple_blog/admin.php?id=8
我不知道这些错误是什么。请帮帮我。
答案 0 :(得分:1)
可能是您的服务器已配置,因此$_POST['title']
不会自动显示为$title
。
$_POST
项进行初始化。
<?php
if($_SERVER['REQUEST_METHOD']=='POST'
&& $_POST['submit']=='Save Entry'
&& !empty($_POST['title'])
&& !empty($_POST['entry']))
{
$title = $_POST['title'];
$entry = $_POST['entry'];
...
}
答案 1 :(得分:0)
错误/警告非常自我解释;你必须先定义变量才能使用它们(大部分时间):
$title = $_POST['title'];
$entry = $_POST['entry'];
第14行以上的任何地方都可以。
PHP有register_globals
设置可以自动为您执行此操作,但由于它是配置设置,因此您无法可靠地使用它。我相信在最新版本的PHP中它已经不再可用了。
答案 2 :(得分:0)
PHP Notice: Undefined variable: title
表示没有名为title的变量。看着你的代码,你几乎就在那里,但是错过了两行。
您需要为变量分配$_POST
数据。在if语句中添加以下行,你应该没问题
$title=$_POST['title'];
$entry=$_POST['entry'];