Mysql UPDATE

metal_head

Registered
Така, аз завърших успешно първата си форма (форма за регистрация) с проверки за нежелани знаци, за съществуващи записи и така нататък. Та с тази форма ползвах INSERT INTO, за да вкарам записа. Сега обаче имам нова, много по-елементарна форма, която е предназначена да редактира записи (не на регистрираният потребител), където искам да използвам UPDATE.

Направих си формата и всичко е 6. Когато цъкна събмит бутона, в началото на функцията, която съдържа редовете за промяна на записа, съм сложил един echo, който да ми изведе на екрана какво съм събмитнал и всичките стойности, които се извеждат са правилни.

Ползвам това, за да променя записа в базата данни:

PHP:
$result = mysql_query("UPDATE newsbox SET news_title='$title', small_desc='short_desc', desc='$desc', thumbnail='$thumbnail', image=''$image, link='$link' WHERE category='$cat' AND number='$index'");


След това имам една проверка за грешки:
PHP:
if(!result) die(mysql_error());
else echo"Новините са обновени успешно!";
}

И всичко минава като по вода. Казва ми, че новините са редактирани успешно, само че в базата данни записа не се променя. Има записи, които отговарят на условието WHERE category='$cat' AND number='$index' (знам го, защото, както казах извеждам какво съм събмитнал и сравнявам с базата данни на сървъра).

Защо нямам никаква промяна в записите? Поствам само този код, защото по пътя на логиката само той остава да не е наред.
 
rombeca каза:
На първо четене си объркал това:


PHP:
... image=''$image...

Виж кавичките.

Ох, мерси! Това е голяма изцепка (трябва да си почина малко). Също бях изпуснал един "$" преди променливата "short_desc". Сега много внимателно го погледнах и не виждам никакви такива синтактични изцепки.

Проблема е обаче, че продължава да не се обновява. Сигурен съм, че полетата имат същите имена в базата данни и съм сигурен, че са с нужния тип данни. Ако трябва ще постна целия код.
 
Пробвай да пуснеш SQL заявката директно в phpmyadmin със стойностите, които очакваш да има, за да видиш дали самата заявка работи. Ако всичко е наред, точно преди изпълнението на заявката в php файла, направи едно echo и изведи всички променливи, които участват в нея, за да видиш дали са такива, каквито ги очакваш. Може някъде да е станала грешка и да губиш данни. Ако пак не откриваш причината....дай кода! :wink:
 
misho каза:
Пробвай да пуснеш SQL заявката директно в phpmyadmin със стойностите, които очакваш да има, за да видиш дали самата заявка работи. Ако всичко е наред, точно преди изпълнението на заявката в php файла, направи едно echo и изведи всички променливи, които участват в нея, за да видиш дали са такива, каквито ги очакваш. Може някъде да е станала грешка и да губиш данни. Ако пак не откриваш причината....дай кода! :wink:

Благодаря ти за съвета! Направих точно това в phpmyadmin и ми даде грешка номер 1064 близо до "desc". Гугълнах го това нещо...информацията беше доста различна, но от това, което прочетох разбрах, че тази грешка се дава, ако съм използвал служебна дума от mysql. Явно "desc" е служебна дума (което е странно, защото, когато създавах таблицата с полето desc нямах проблеми). Както и да е, промених името на desc и сега всичко работи.

:?:
 
Един съвет от мен: аз винаги си паша заявките така:
[sql]SELECT `id`, `title`, `desc` FROM `pages` WHERE `active` = `1` ORDER BY `date` ASC[/sql]
С тези кавички избягваш подобни проблеми и можеш да си използваш каквито си искаш имена. :wink:
 

Back
Горе