无法使用php表单将数据插入mysql数据库

时间:2012-05-27 14:13:57

标签: php mysql database

我正在尝试使用名为 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

我不知道这些错误是什么。请帮帮我。

3 个答案:

答案 0 :(得分:1)

可能是您的服务器已配置,因此$_POST['title']不会自动显示为$title。 $title = $_POST['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'];