在提交已编辑的帖子时编辑PHP脚本空白屏幕

时间:2016-03-28 11:36:37

标签: php

我最近开展了一个小型网络开发项目,以创建在线投资组合和博客。我一直在摆弄一些PHP代码来编辑网站上的博客文章,这给我带来了一些问题。其中最大的是当我将更改后的帖子提交到数据库时会发生什么。当我提交帖子时,我只得到一个空白的屏幕,我目前不知所措。如果需要更多信息,请告诉我。提前致谢。

我的尝试:

<?php 
ob_start(); 
include('db.php'); 
if(isset($_GET['id'])) 
{ 
    $id=$_GET['id']; 
    if(isset($_POST['update'])) 
    { 
        htmlspecialchars($title); 
        htmlspecialchars($content); 
        strip_tags($title); 
        strip_tags($content); 
        $updated= mysql_query("UPDATE blog_entry SET title=$title, content=$content WHERE post_id='$id'")or die(); 
        if($updated) 
        { 
            $msg="Successfully Updated!!"; 
            echo $msg; 
            header('Location:blog.php'); 
        } 
    } 
} //update ends here ob_end_flush(); 
?>

1 个答案:

答案 0 :(得分:0)

这四行没有效果:

htmlspecialchars($title); 
htmlspecialchars($content); 
strip_tags($title); 
strip_tags($content);

您必须将结果分配给某些内容:

$title   = htmlspecialchars( $title ); 
$content = htmlspecialchars( $content ); 
$title   = strip_tags( $title ); 
$content = strip_tags( $content );

另请注意,使用上述代码时,单引号(')将无法正确转义。考虑使用:

$title   = mysql_real_escape_string( $title ); 
$content = mysql_real_escape_string( $content ); 

然后,您必须用单引号括起您的字段值:

$updated = mysql_query( "UPDATE blog_entry SET title='$title', content='$content' WHERE post_id='$id'" ) or die();
#                                                    ↑      ↑          ↑        ↑

并且,为了更好地控制错误,请在die()

中添加一些内容
$updated = mysql_query( ... ) or die( mysql_error() );

请注意:

  

mysql _ 语法在PHP 5.5.0中已弃用,已在PHP 7.0.0中删除。相反,应使用 MySQLi PDO_MySQL 扩展程序。

(来自PHP官方网站)