0

我尝试将代码从 MYSQL 更改为 SQL,但出现错误(SQL Syntax 'Limit')。

所以我尝试更改我的查询并使用“TOP”进行更新,但似乎仅适用于 SELECT。

那么,我该如何更改这个 MYSQL 查询:

$fct="UPDATE `users` SET `STREAM_TITRE` = '$STREAM_TITRE',`STREAM_URL` = '$STREAM_URL',`STREAM_DESC` = '$STREAM_DESC',`STREAM_GENRE` = '$STREAM_GENRE' WHERE `ID` =$IDSESS LIMIT 1";

这是我没有限制的 SQL 代码:

$fct="UPDATE users SET STREAM_TITRE = '$STREAM_TITRE', STREAM_URL = '$STREAM_URL', STREAM_DESC = '$STREAM_DESC', STREAM_GENRE = '$STREAM_GENRE' WHERE ID = '$IDSESS'";

谢谢

4

1 回答 1

5

目前还不清楚您的查询的哪个版本正在工作,哪个版本不工作 - 以及在什么 DBMS 中。

如果ID是 char 或 varchar 类型,则LIMIT版本中缺少一些引号。虽然 MySQL 不是很挑剔,你不会有很多问题,带或不带引号:

$fct = "
  UPDATE users 
  SET STREAM_TITRE = '$STREAM_TITRE'
    , STREAM_URL = '$STREAM_URL'
    , STREAM_DESC = '$STREAM_DESC'
    , STREAM_GENRE = '$STREAM_GENRE' 
  WHERE ID = $IDSESS              --<-- this should be '$IDSESS' , right?
                                  ----- or $IDSESS , depending on the datatype
  LIMIT 1
       ";

注意:LIMIT n适用于 MySQL 和 PostgreSQL,但不适用于其他一些 DBMS。另外,我不认为你真的需要它,因为ID它可能是表的主键。

如果您尝试将语句从 MySQL 转换为 SQL-Server,则不应使用反引号并替换LIMIT 1TOP (1)

$fct = "
  UPDATE TOP (1) users 
  SET STREAM_TITRE = '$STREAM_TITRE'
    , STREAM_URL = '$STREAM_URL'
    , STREAM_DESC = '$STREAM_DESC'
    , STREAM_GENRE = '$STREAM_GENRE' 
  WHERE ID = $IDSESS             
       ";
于 2012-04-10T10:11:38.290 回答