PHP插入数据库无法正常工作

问候我做了以下PHP脚本,以便我可以编辑文本,它将保存到数据库以供将来使用.但是我在更新/插入查询时遇到了一些麻烦.我不确定我做错了什么,但只执行其中一个命令.我不确定这是托管问题还是我做错了什么.

有任何想法吗?

if (isset($_SESSION["logged"]) && $_SESSION["logged"]==1){  
    if ($_POST['action']=="edit"){
        $query=MysqL_query("select * from page where active=1 AND heading='".$_POST['selectedpage']."'");
        $row = MysqL_fetch_array($query, MysqL_ASSOC);

        echo "<h1>HTML Editor </h1><br>";
        echo "<form name='saveform' action='./action.PHP'  method='post'>";
        echo "<textarea rows='100' cols='100' name='updateBox'>".$row['content']."</textarea>";
        echo "<br><input name='action' type='submit' value='save edit'>";
        echo "<input name='heading' type='hidden' value='".$row['heading']."'>";
        echo "</form>";
    } else if($_POST['action']=="save edit"){
        $query=MysqL_query("UPDATE page SET active='0' where heading='".$_POST['heading']."'");
        $query=MysqL_query("INSERT into page(heading,content,active) values('".$_POST['heading']."','".$_POST['updateBox']."','1')");
        echo "<p>Changes saved succesfully!</p>";
        echo "$_POST['updateBox']";
    }
}

解决方法:

如果在运行的每个查询调用echo MysqL_error($query),您将能够看到该查询是否存在错误.您的查询内容可能存在问题.

您没有对sql注入执行任何清理,因此如果您的内容中包含引号,则会破坏您的查询.这非常危险(您的查询很容易受到用户输入的sql注入),您应该考虑在所有查询变量上使用mysql_real_escape_string,或者切换到PDOMySQLi驱动程序.这些驱动程序支持查询绑定,这是防止sql注入的绝佳方法.

编辑社论:)

顺便说一句,通常很容易想出一个快速数据库包装器或函数处理程序来自动处理这类错误.我使用基于类的包装器,但如果你现在不想走那么远,你可以这样做:

//very quick-and-dirty
function queryOrDie($query)
{
    $query = MysqL_query($query);
    if (! $query) exit(MysqL_error());
    return $query;
}

您可以通过它传递所有查询,并且您可以更轻松地进行调试.那里也有很多数据库包装类,我强烈建议你去逛一逛.他们让生活更轻松.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...