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