0

注意:未定義の変数:11行目のE:\ xampp \ htdocs \ blog4\new-post.phpのタイトル

このエラーが発生し続け、データが送信される前に欠落データが表示されます

include('db.php');

        if(isset($_POST['submit'])){
        $title = $_POST['title'];
        $body = $_POST['body'];

}

if($title && $body){
            $query = mysql_query("INSERT INTO posts (title, body) VALUES('$title', '$body')");
            if($query){
                echo"Post Added";
                }else{
                echo"error";}
        }else{
            echo"Missing data";
        }
4

5 に答える 5

1

db.php

<?php
$db = new PDO('mysql:host=127.0.0.1;dbname=db_name_here', 'username', 'password');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
?>

new-post.php

<?php
include 'db.php';
if(isset($_POST['submit'])) {
    $query = $db->prepare('INSERT INTO posts (title, body) VALUES (?, ?)');
    $result = $query->execute(array($_POST['title'], $_POST['body']));
    if($result) {
        echo 'Post Added!';
    } else {
        echo 'Database error.';
    }
} else {
    echo 'Missing data!';
}
?>

関数は使用しないでくださいmysql_*。これらの関数は保守されなくなり、非推奨のプロセスになっています。

代わりにPDOを使用してください。

PDOはプリペアドステートメントもサポートしているため、SQLインジェクションを回避できます。

于 2012-11-12T00:24:00.890 に答える
1

$_POST['submit']が設定されていない場合、$title初期化されません。

于 2012-11-12T00:01:24.573 に答える
1

で代用

if (isset($title, $body)) {
    //....
于 2012-11-12T00:02:22.053 に答える
0

上部にこのように空で $title を初期化しました

$title = "";
于 2012-11-12T00:02:38.347 に答える
0

POST リクエストを確認してから、値を確認して設定します。値がnullでない場合は、クエリを実行し、入力を安全に'してください。そうしないと、データに含まれているとエラーが発生します。

include('db.php');

if($_SERVER['REQUEST_METHOD']=='POST'){
    $title = (!empty($_POST['title'])?$_POST['title']:null);
    $body  = (!empty($_POST['body'])?$_POST['body']:null);

    if($title != null && $body != null){
        $query = mysql_query("INSERT INTO posts (title, body) VALUES ('".mysql_real_escape_string($title)."', '".mysql_real_escape_string($body)."')");
        if($query){
            $result = "Post Added";
        }else{
            $result = "Error";
        }
    }else{
        $result = "Missing data";
    }

    echo $result;
}
于 2012-11-12T00:12:42.497 に答える