Php MySQL更新语法错误

Php MySQL更新语法错误,php,mysql,Php,Mysql,我使用php在数据库上运行一个基本的更新,但是我遇到了SQL语法错误,我一辈子都看不出哪里出了问题。数据库中的字段称为orders,它被设置为int(8)。我已经尝试将它更改为smallint和varchar,虽然有所增加,但没有乐趣。我也尝试过在查询中修改“and”这个词。代码如下 $query = "UPDATE gigs SET order='$order' WHERE gig_id='$id'"; if ($r = mysql_query($query) ) {

我使用php在数据库上运行一个基本的更新,但是我遇到了SQL语法错误,我一辈子都看不出哪里出了问题。数据库中的字段称为orders,它被设置为int(8)。我已经尝试将它更改为smallint和varchar,虽然有所增加,但没有乐趣。我也尝试过在查询中修改“and”这个词。代码如下

    $query = "UPDATE gigs SET order='$order' WHERE gig_id='$id'";
    if ($r = mysql_query($query) ) {
        echo  "<p>UPDATED:" . $row['year'] ." - " . $row['month'] . " - " .  $row['day'] . " = $order</p>";
    } else {
        echo "<p>" . mysql_error() . "<br />$q</p>";
    }
$query=“更新gigs设置顺序='$order',其中gig\u id='$id';
if($r=mysql\u查询($query)){
echo“更新:“.$row['year']”-“$row['month']”-“$row['day']”=$order

”; }否则{ echo“”.mysql_error()。“
$q

”; }
$order是年、月和日的值组合成一个整数值,例如2013年4月12日=20130412

以下是我收到的错误消息

您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行的“order='20040802',其中gig_id='10''附近使用的正确语法 更新gig设置顺序='20040802',其中gig\u id='10'

您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行的“order='20040804',其中gig_id='11''附近使用的正确语法 更新gig设置顺序='20040804',其中gig\u id='11'


ORDER
是一个保留关键字。为了使语句不引发异常,您需要使用backtick转义该列

UPDATE gigs SET `order` = '$order' WHERE gig_id = '$id'
作为旁注,如果变量的值来自外部,则查询易受攻击。请参阅下面的文章,了解如何防止这种情况。通过使用
PreparedStatements
可以避免在值周围使用单引号


ORDER
是一个保留关键字。为了使语句不引发异常,您需要使用backtick对列进行转义

UPDATE gigs SET `order` = '$order' WHERE gig_id = '$id'
作为旁注,如果变量的值来自外部,则查询易受攻击。请参阅下面的文章,了解如何防止这种情况。通过使用
PreparedStatements
可以避免在值周围使用单引号


@EdHeal如果是数值的MySQL不在乎它是否被引用。如果我知道它是数值的,我不会引用它,但我已经多次创建动态查询,在这种情况下我只引用所有内容。当然更好的选择是使用PDO和绑定参数;)

@EdHeal如果是数值的MySQL不在乎它是否被引用。如果我知道它是数字的,我不会引用它,但我已经创建了很多次动态查询,在这种情况下我只引用所有内容。当然,更好的选择是使用PDO和绑定参数;)

你从我口中说出了这些话。而且可能
gid\u id
是数字的-所以
其中gig\u id=$id
可能是必需的。@EdHe我同意你的看法,但我不确定数据类型,所以我保留了它。@JW-只是添加了它作为一个注释,以将其标记为另一个可能的问题。谢谢伙计们,这很好,现在都更新了:-)你从我口中说出了这些话。而且可能
gid_id
是数字的-所以
其中gig_id=$id
可能是必需的。@EdHeal I同意您的意见,但我不确定数据类型,所以我将其保留原样。@JW-只是将其添加为注释,以将其标记为另一个可能的问题。谢谢各位,这很好,现在已全部更新:-)可能重复的可能重复的