我最近开展了一个小型网络开发项目,以创建在线投资组合和博客。我一直在摆弄一些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();
?>
答案 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官方网站)