0

PHP forAbsoluteBeginnersというタイトルの本を使って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

これらのエラーが何であるかわかりません。私を助けてください。

4

3 に答える 3

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'];

...
}
于 2012-05-27T14:16:46.263 に答える
0

エラー/警告はかなり自明です。変数を使用する前に(ほとんどの場合)変数を定義する必要があります。

$title = $_POST['title'];
$entry = $_POST['entry'];

14行目より上のどこでもかまいません。

PHPにはregister_globalsこれを自動的に行う設定がありますが、これは構成設定であるため、確実に使用することはできません。PHPの最新バージョンでは、使用できなくなったと思います。

于 2012-05-27T14:16:16.143 に答える
0

PHP Notice: Undefined variable: titletitleという変数がないことを意味します。そして、あなたのコードを見ると、あなたはほとんどそこにいますが、2行を逃したところです。$_POSTデータに変数を割り当てる必要があります。ifステートメントのすぐ内側に次の行を追加すると、問題がないはずです。

$title=$_POST['title'];
$entry=$_POST['entry'];
于 2012-05-27T14:18:09.020 に答える