注意:未定义的变量:第11行的E:\ xampp \ htdocs \ _blog4 \ new-post.php中的标题

时间:2012-11-11 23:55:45

标签: php html mysql

注意:未定义的变量:第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";
        }

5 个答案:

答案 0 :(得分:1)

如果未设置$_POST['submit'],则不会初始化$title

答案 1 :(得分:1)

替换为

if (isset($title, $body)) {
    //....

答案 2 :(得分: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注入。

答案 3 :(得分:0)

在顶部

初始化$ title为空的$ title
$title = "";

答案 4 :(得分: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;
}