Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Sql添加新文章_Php_Sql - Fatal编程技术网

PHP Sql添加新文章

PHP Sql添加新文章,php,sql,Php,Sql,需要一些PHP和MySQL的帮助,如果我出错了,我找不到 尝试使用函数调用添加新的博客文章。我知道所有其他代码都是正确的,因为若我手动将条目添加到数据库sql中,它会显示在博客上。向数据库sql添加新条目时,它不会添加到数据库中。。有人注意到什么不对劲吗 我有功能的时间和日期的职位,他们都工作。如果我能弄明白这一部分,我也能修复标签。如果有人想在一个txt文件中看到,请告诉我很难在这里发布直接的代码 function eb_admin_newarticle() { global $lan

需要一些PHP和MySQL的帮助,如果我出错了,我找不到

尝试使用函数调用添加新的博客文章。我知道所有其他代码都是正确的,因为若我手动将条目添加到数据库sql中,它会显示在博客上。向数据库sql添加新条目时,它不会添加到数据库中。。有人注意到什么不对劲吗

我有功能的时间和日期的职位,他们都工作。如果我能弄明白这一部分,我也能修复标签。如果有人想在一个txt文件中看到,请告诉我很难在这里发布直接的代码

function eb_admin_newarticle()
{
    global $lang;
    $output="\t\t".ucwords($lang['new_article'])."\r\n";;
    //To add new article post
    if(!empty($_POST['text']))
    {
        foreach($_POST as $key=>$value)
            $_POST[$key]=str_replace("Acirc;","",$value);
        $sql="INSERT INTO eb_articles SET article_flag=".$_POST['sticky'].",article_date=\"".time()."\",author_id=\"".$_SESSION['user_id-'.$_SERVER['SERVER_NAME']]."\", article_title=\"".str_replace("\"",""",$_POST['title'])."\",article_body=\"".$_POST['text']."\",article_comments=".$_POST['comments'];
        mysql_query($sql);

        $article_id=mysql_insert_id();
        //input tags on article
        if(strlen($_POST['tags'])>1) {
            $tags=explode(",",$_POST['tags']);
            foreach($tags as $tag) {
                $sql="INSERT INTO eb_tags SET tag_name=\"".$tag."\"";
                mysql_query($sql);
                if(mysql_affected_rows()==1)
                    $tag_ids[]=mysql_insert_id();
                else
                    $tag_ids[]=mysql_result(mysql_query("SELECT tag_id FROM eb_tags WHERE tag_name=\"".$tag."\""),0);
            }
            foreach($tag_ids as $tag_id)
                mysql_query("INSERT INTO eb_tags_links SET tag_id=".$tag_id.",article_id=".$article_id);
        }

        header('Location: news.php?id='.$article_id);
    }
    else {
        $output.="\t\t<form action=\"admin.php?id=newarticle\" method=\"post\">\r\n";
        $output.="\t\t\t<p><b>".ucwords($lang['title'])."</b><br /><input class=\"inputtext\" type=\"text\" name=\"title\" /></p>\r\n";
        $output.="\t\t\t<textarea id=\"text\" name=\"text\"></textarea>\r\n";
        $output.="\t\t\t<p><b>".ucwords($lang['tags'])."</b><br />".$lang['tag_seperate']."<br /><input type=\"text\" class=\"inputtext\" name=\"tags\" /></p>\r\n";
        $output.="\t\t\t<p><b>".ucwords($lang['sticky'])."</b><br /><input type=\"radio\" name=\"sticky\" value=\"1\" checked=\"checked\" /> ".ucwords($lang['no'])."<br /><input type=\"radio\" name=\"sticky\" value=\"2\" /> ".ucwords($lang['yes'])."</p>\r\n";
        $output.="\t\t\t<p><b>".ucwords($lang['comments'])."</b><br /><input type=\"radio\" name=\"comments\" value=\"0\" /> ".ucwords($lang['no'])."<br /><input type=\"radio\" name=\"comments\" value=\"1\" checked=\"checked\" /> ".ucwords($lang['yes'])."</p>\r\n";
        $output.="\t\t\t<p><input type=\"submit\" name=\"submit\" value=\"".ucwords($lang['save'])."\" /></p>\r\n";
        $output.="\t\t</form>\r\n";
        return $output;
    }
}
第一件事

您的代码易受SQL注入攻击。 恶意用户可以很容易地清除整个表。 您还应该始终使用exit;在头重定向之后。 发送标题时,页面仍将继续执行。此外,这只是对浏览器的一个建议。恶意用户可以使其浏览器忽略标题并加载页面。 你提出了一大堆不必要的问题。 将标记添加到数据库后,您将通过另一个查询获得标记ID。标签ID已经在mysql\u insert\u ID中。无需查询数据库。 如果要向数据库中添加10篇文章,需要进行10次查询。这是完全没有必要的。请参阅MySQL手册,了解如何使用一个查询执行此操作。 你甚至不应该使用mysql! 这是不推荐的和糟糕的风格!去寻找mysqli或PDO的教程,不要转载2008年的文章! 对于实际问题,请尝试自己调试。您没有检查任何查询是否成功。执行查询时,mysql\u查询在失败时返回资源或FALSE。检查是否发生了这种情况,这样您就可以找出错误发生的确切位置

造成这种情况的一个原因可能是缺乏封装。例如,您需要更换

$sql="INSERT INTO eb_articles SET article_flag=".$_POST['sticky'].", ...


这适用于任何地方,始终使用“封装内容”。这应该可以解决手头的问题,但您的应用程序仍然非常脆弱。

请阅读代码格式!我很抱歉在这个网站上没有贴标签。。是的,很多地方都很危险,这就是我为什么没有公开的原因。。我发现我忘了添加语法。我会写一个错误页我的眼睛受伤了。。但是我知道如果我用phpmyadmin之类的东西添加数据库条目,它就会工作。你误解了。如果mysql\u查询。。。{…}否则{//log error,etc.}.sry我是sql脚本新手,如果我在eb文章中插入$sql=INSERT,可能会很有帮助。设置文章标题='\.str\u replace\,$\u POST['title'].\',文章正文='\.$\u POST['text'].\',文章注释='.$\u POST['comments'];或者$sql=插入eb_文章标题、文章正文、文章注释值“$_POST['title']”、“$_POST['text']”、$_POST['comments']”中,并检查类似错误?如果mysql_query$sql{die'Error:'.mysql_Error;}添加了echo 1条记录;我应该辞职,明天用新的眼光看它thx寻求帮助
$sql="INSERT INTO eb_articles SET article_flag='".$_POST['sticky']."', ...