MYSQL到SQL - 限制更新

Cha*_*don 0 mysql sql limit

我尝试将我的代码从MYSQL更改为SQL,并且出现错误(SQL语法'限制').

所以我试图改变我的查询并用"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";
Run Code Online (Sandbox Code Playgroud)

这是我的无限制SQL代码:

$fct="UPDATE users SET STREAM_TITRE = '$STREAM_TITRE', STREAM_URL = '$STREAM_URL', STREAM_DESC = '$STREAM_DESC', STREAM_GENRE = '$STREAM_GENRE' WHERE ID = '$IDSESS'";
Run Code Online (Sandbox Code Playgroud)

谢谢

ype*_*eᵀᴹ 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
       ";
Run Code Online (Sandbox Code Playgroud)

注意:LIMIT nMySQL和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             
       ";
Run Code Online (Sandbox Code Playgroud)