2012-04-10 4 views
0

Я пытаюсь изменить свой код с MYSQL на SQL и получить ошибку (синтаксис SQL Limit).MYSQL to SQL - Limit in Update

Итак, я попытался изменить свой запрос и обновить с помощью «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

+1

Как выглядит запрос, если вы печатаете $ fct? – Jim

+0

Какую версию SQL Server вы используете? В документации, которую я видел, говорится, что вы можете использовать TOP с UPDATE. Это просто не работает, или вы получаете сообщение об ошибке? –

ответ

5

Это не очень понятно, какая версия вашего запроса работает, а что нет - и в какой СУБД.

Если 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 
     "; 

Примечания: The LIMIT n работает в MySQL и PostgreSQL, но не в других СУБД. Кроме того, я не думаю, что вам это действительно нужно, так как ID, вероятно, является основным ключом таблицы.

Если вы пытаетесь преобразовать оператор из MySQL в SQL-сервер, вы не должны использовать обратные кавычки и заменить LIMIT 1 с TOP (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-версию, это будет идеально, но спасибо;) –

+0

Что вы имеете в виду под «SQL-версией»? Microsoft SQL-Server? –