[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql UPDATE, то работает, то нет
Страницы: 1, 2
Игорь_Vasinsky
я же написал.

если он охеревает от того что строка не обновляется - т.к. он её удалил, а он пытается её обновить - то

INSERT + ON DUPLICATE KEY UPDATE

если строка не найдена то она создастся, если найдена - то обновиться

http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
pro_xaoc
Игорь_Vasinsky
как я понял, мне придется полностью переписывать значение строки, все поля, где надо - обновить ...
Спасибо, попробую разобраться ...
Игорь_Vasinsky
зачем???
обновляешь только то в строке что нужно))

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

но поле по которому ищешь всё таки должно быть с уникальным клюсом. ключ то поставит 1 кнопкой в PMA

в итоге если строка с искомой ячейко есть - то аналогично

UPDATE table SET c=c+1 WHERE a=1;


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
pro_xaoc
Игорь_Vasinsky
в том-то и дело, что такое поле есть, я заранее создал и делал так не один десяток раз и всегда везде работало, поэтому мне не приходилось сталкиваться с ON DUPLICATE KEY UPDATE, т.к. это же обычное обновление ведь ... ща сижу тестирую ...
pro_xaoc
все равно чет не работает((
в phpmyadmin'е стоит так:
id 1
fio Вася
login admin
password 21232f297a57a5a743894a0e4a801fc3
testResult 1
access superAdmin

выполнил код:
$testResult = $db->goSQL("SELECT * FROM `users` WHERE `login`=?",array($this->Login)); 
$db->goSQLInsert("INSERT INTO `users` (`id`,`fio`,`login`,`password`,`testResult`,`access`) VALUES ('$testResult[0]','$testResult[1]','$testResult[2]','$testResult[3]','$testResult[4]','$testResult[5]') ON DUPLICATE KEY UPDATE `testResult`=?",array("fjdlsfj"));

Но результат такой же, как если б я использовал UPDATE, т.е. не обновляет ячейку.
pro_xaoc
ой, это из-за того, что я спать хотел или еще чего, но я кароче вчера ступил) седня с утра взялся и увидел, нафиг я в конце использую array("fjdlsfj") smile.gif
в общем Игорь_Vasinsky, твое решение помогло) низкий Вам поклон!
Игорь_Vasinsky
нормально)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
SlavaFr
1) Для меня честно говоря не совсем понятно зачем постоянно менять имя столбца?
2) Так же мне не понятно удевление по пводу того, что упдате не работает на поле, которое было переименовано, но имеет в запросе все еще старое имя? ( или я не правильно понял)
3) "не работает" к сожалению не достаточное описание проблемы.
Выдается ошибка или просто не изменяется поле в соответственной строке?
Если выдается ошибка, то покажи.
Если нет, то посмотри есть строка которую ты хочеш изменять?
SELECT count( `testResult`) from `users` WHERE `login`='admin'


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
pro_xaoc
SlavaFr
1. Я разрабатываю онлайн-тестирование, поэтому мне нужно: когда пользователь отвечает на каждый вопрос, мне приходится изменять данные в базе, т.е. в строку пользователя, в поле testResult, мне приходится доставать данные и видоизменять типа: [categoriyaTesta]={vopros1:otver1}, дальше када приходит след ответ, в базу запишется [categoriyaTesta]={vopros1:otver1,vopros2:otver2} и т.д.
2. Апдейт не работает тогда, когда я в phpmyadminе удаляю содержимое поля. А в самом начале он работает.
3. Не работает, значит не изменяется поле в строке.
SlavaFr
Цитата (pro_xaoc @ 7.11.2012 - 08:14)
3. Не работает, значит не изменяется поле в строке.

тогда докажи сам себе, что строка с этими поисковыми критериями действительно существует.

Если выяснится, что дейстивелъно существует аномалия в поведении PHPMyadmin то
1) Сообщи о баге программистам Phpmyadmin, так как речь идет не о PHP и не о SQL, a o PhpMyadmin
2) Если нет не какого быстрого решения проблемы, то разработай собственный формулар для изменения в базе данных.




_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
pro_xaoc
SlavaFr
действительно существует, я воочию вижу его в пыхпыхадмине, да и код "SELECT count( `testResult`) from `users` WHERE `login`='admin" возвратил единицу ...
pro_xaoc
Вот я придурок) Причина была банальна, в действительности обычный UPDATE работал оказывается. Просто я когда изменял данные в phpmyadminе и сохранял, в верху страницы сохранялся sql код моего действия (т.е. я же удалял содержимое поля testResult, соответственно код был для него "UPDATE `v_178_nntrans`.`users` SET `testResult` = '' WHERE `users`.`id` =1;"), при каждом обновлении которого код выполняется biggrin.gif и соответственно поле очищается) а мне кажется, что ничего не записывается smile.gif
SlavaFr
А я то думал, что наконец случилось волшебство smile.gif

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.