PHP插入数据库不工作

标签 php mysql

问候 我制作了以下 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 注入(inject)执行任何清理,因此如果您的内容中有引号,它会破坏您的查询。这是相当危险的(您的查询容易受到来自用户输入的 SQL 注入(inject)的攻击),您应该考虑使用 mysql_real_escape_string在所有查询变量上,或切换到 PDOMySQLi司机。这些驱动程序支持查询绑定(bind),这是防止 SQL 注入(inject)的绝佳方法。

编辑社论:)

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

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

您可以通过它传递所有查询,这样您就可以更轻松地调试它。那里也有很多数据库包装器类,我强烈建议您四处看看。他们让生活更轻松。 :)

关于PHP插入数据库不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2097728/

相关文章:

c++ - MySQL C API 为 NULL 值返回零而不是 NULL

php - 我使用 str_replace 在没有逗号分隔符和小数点的情况下将值获取到数据库。现在,如何以旧格式从数据库返回?

php - 使用 preg_replace 的 '&' 字符正则表达式

php - 从图像对象输出图像 URL 作为背景图像

php - Json_encoded 值未更新到数据库

mysql - 搜索两个不同数据库之间的共同值

php - sql中的事件通知错误

javascript - 为 PHP URL 中的一个变量发送多个值?

php - 在 jQuery 自动刷新 div 中使用 jQuery 工具提示

php - 验证 MySQL 查询中的日期范围