PHP / MySQL更新查询问题

时间:2011-12-09 17:02:11

标签: php mysql

我无法使此查询正常工作:

if(isset($_POST['updateRecord'])) {
    mysql_query("UPDATE files SET title = '$_POST[title]', description = '$_POST[description]', internal = '$_POST[accessFile]', category = '$_POST[category]' WHERE title = '$_POST[title]'");
    header("Location: system-management.php?viewFiles=on");
}

当标题重定向到正确的页面时,它肯定会输入if语句。我已经将表单设置为使用post方法,即使我使用get方法,我也可以看到我的表单数据正在传递。

我已尝试在查询中引用标头位置和错误报告(或死亡),但它没有带来任何错误

表单提交按钮位于表格列中,如下所示:

<input type='submit' value='Save Changes' name='updateRecord' />

我在这里找不到一些非常明显的东西吗?

非常感谢您提供的任何帮助!

5 个答案:

答案 0 :(得分:1)

您必须按如下方式使用大括号

mysql_query("UPDATE files SET title = '{$_POST[title]}', 
    description = '{$_POST[description]}', internal = '{$_POST[accessFile]}', 
    category = '{$_POST[category]}' WHERE title = '{$_POST[title]}'");

需要大括号来转义变量表达式。请参阅PHP Doc上的Strings。您还可以参考this answer on stackoverflow以了解有关字符串中大括号的用法的更多信息。

答案 1 :(得分:0)

  1. 修改语法。
  2. 拥有包含查询的变量总是一个好主意,这样您就可以验证正在执行的查询
  3. 像这样:

    $query = "UPDATE files SET title = \"{$_POST['title']}\", description = \"{$_POST['description']\", internal = \"{$_POST['accessFile']\", category = \"{$_POST['category']\" WHERE title = \"{$_POST['title']\"";
    // echo $query;
    mysql_query($query);
    

答案 2 :(得分:0)

假设IF正在工作,问题似乎是从$ _POST读取变量的方式。变量名称应括在引号中。请试试这个:

mysql_query("UPDATE files SET title = '" . $_POST['title'] . "', description = '" . $_POST[description] . "', internal = '" . $_POST[accessFile] . "', category = '" . $_POST[category] . "' WHERE title = '" . $_POST[title] . "'");

希望这有帮助!

答案 3 :(得分:0)

尝试为您的提交按钮id="whatever"添加ID。

我没有看到mysql_query的第二个参数($ query,$ connection);,你的连接字符串不存在。

检查你的WHERE条款,

查看错误添加mysql_query("",$con) or die(mysql_error());

答案 4 :(得分:0)

尝试一下

 mysql_query("UPDATE files SET title = '".$_POST[title]."', description = '".$_POST[description]."', internal = '".$_POST[accessFile]."', category = '".$_POST[category]."' WHERE title = '".$_POST[title]."'");

希望此问题已解决