2012-04-10 41 views
0

我嘗試將我的代碼從MYSQL更改爲SQL,並且出現錯誤(SQL語法「限制」)。MYSQL to 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'"; 

感謝

+0

我懷疑'SQL語法「Limit''是完整的錯誤?問題是什麼?在我看來,你有一個不起作用的查詢,並且有一個問題,所以問題是你有一個問題有效嗎? – Nanne 2012-04-10 10:05:16

+1

如果您打印$ fct,查詢的效果如何? – Jim 2012-04-10 10:10:45

+0

您使用的是哪個版本的SQL Server?我見過的文檔聲明,你可以在UPDATE中使用TOP。它是不是工作,或者你有錯誤信息? – 2012-04-10 10:18:06

回答

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 
     "; 

注:MySQL和PostgreSQL的LIMIT n的作品,而不是在一些其他的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    
     "; 
+0

更改了謝謝。如果你發現一個SQL版本,它會是完美的,但是謝謝;) – 2012-04-10 10:13:16

+0

你對「SQL版本」有什麼意思? Microsoft SQL服務器? – 2012-04-10 10:14:23