0

コードを 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";

制限のない私の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 に答える