更新数据库时出错

时间:2014-07-08 19:06:45

标签: php mysql sql

    $record_id1=$_REQUEST['record_id'];

    echo $record_id1;
    echo $dor1;
    if(isset($_REQUEST['updatebtn']))
    {                    
        $status=$_REQUEST['up'];
        $sql="UPDATE record SET dor='$dor1' WHERE record_id=$record_id1";
        mysql_query($sql) or die(mysql_error());
    }

我正在尝试更新我的record表格,该表格会在其WHERE子句中包含record_id1,只需更新dor=$dor此处dor已在页面中正确设置。问题是,当我尝试执行此页面时,我收到以下错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本以获得正确的语法...

我已经花了好几个小时而且当我使用... WHERE record_id=7(any numeric value)表格得到更新时无法指出错误但是当我用$record_id1更新它时我收到了上述错误。

Data Type dor =String record_id=int

6 个答案:

答案 0 :(得分:1)

您的表格列名record_id1的末尾是1还是record_id。根据您的问题,您可以使用和数字值进行自定义查询,将其分配给record_id1(末尾为1)。

如果您的列名称为1,则只需更新您的查询以匹配正确的名称。

答案 1 :(得分:0)

你应该逃避你的变量:

$sql = sprintf(
    "UPDATE record SET dor='%s' WHERE record_id=%s",
    mysql_real_escape_string($dor),
    mysql_real_escape_string($record_id1)
);

并回显您的SQL以确保您正在运行的是您所期望的:

echo $sql;

数字值也可以在它们周围加上引号,所以这也会起作用:

$sql = sprintf(
    "UPDATE record SET dor='%s' WHERE record_id='%s'",
    mysql_real_escape_string($dor),
    mysql_real_escape_string($record_id1)
);

现在,不推荐使用所有mysql_ *函数,因此您应该使用mysqli_ *等效函数。

答案 2 :(得分:0)

$sql="UPDATE record SET dor='$dor1' WHERE record_id=$record_id1";
  

问题是当我尝试执行此页面时,我得到以下内容   错误:

-

  

当我使用...表得到的记录_id1 = 7(任何数值)   更新

是在record_id(列名)正确之后的1吗?是您的专栏record_id还是record_id1?如果它真的是record_id1你的。需要使用:

 ... WHERE record_id1=$record_id1 ...

答案 3 :(得分:0)

有时,变量$record_id1中有一个不需要的空格字符。

如果是,请使用trim()

$record_id1=trim($_REQUEST['record_id']);

查询:

$sql="UPDATE `record` SET `dor`='$dor1' WHERE `record_id`='$record_id1'";

答案 4 :(得分:-1)

尝试将qoutes放在WHERE子句周围,如下所示:

$sql="UPDATE record SET dor='$dor1' WHERE record_id='$record_id1'";

还有一件事。请使用MySQLi或PDO而不是MySQL。 MySQL已被弃用。使用MySQLi或PDO可以让你做准备语句

答案 5 :(得分:-1)

$sql="UPDATE record SET dor = '$dor1' WHERE record_id = '$record_id1'";