Здравствуйте, подскажите пожалуйста, в чем проблема. есть вот такой код Код (Text): ..... $ndol=$udata[dol]+$unpc[nagdol]; $nexp=$udata[exp]+$unpc[nagexp]; $nzol=$udata[zol]+$unpc[nagzol]; mysqli_query("UPDATE `users` SET `dol` = '$ndol', `zol`='$nzol', `exp`='$nexp' WHERE `login` = '$log'"); ..... Но после выполнения этого кода в ячейку "zol" результат записывается, а в "dol" и "exp" изменения не происходят, хотя так же должны как и в "zol". Вот и не пойму, в чем моя ошибка.
для начала научиться включать вывод ошибок на экран Код (Text): error_reporting(E_ALL); ini_set('display_errors', 'on'); ini_set('display_startup_errors', 'on'); и потом еще показать какой итоговый запрос отправляется в субд
рассказываю. к ключу в массиве обращаются через строку $ar['key']. когда рукожопый программист пишет $ar[key] то пых сначала ищет константу key а потом если ее нет - делает строку 'key'. поэтому программа условно работает. просто программист который её пишет не знает что она не правильно работает - у него же вывод ошибок почему-то выключен. ведь он считает что всё прямыми руками написал. и если кто-то случайно сделает так define('key', 'huj'); то всё упадет потому что вместо каста константы кей в строку кей будет подстановка вместо константы кей её значения - ну там не сложно прочитать в общем-то. поэтому для начала нужно переписать весь код чтоб он при максимальном уровне (я написал как раз с максимальным) отладки не выдавал ошибок и предупреждений. код должен быть идеальным, всегда. а уже потом будем делать отладку некорректного алгоритма. если проблема конечно останется после исправления чистоты кода.
я должен поощрить то что ребёнок себе руки в жопу пересадил? молодец конечно но еще можно например (сюда можно подставить какой-нибудь критически крутой экшн вроде шагнуть с крыши 12этажного дома или гранату в руке взорвать но сообщение примет оборот призыва к совершению акта насильственных действий и/или суицида что преследуется законом поэтому я промолчу) - от этого он как бы не станет крутым молодцом. вот если бы он качественный код написал тогда ок. я бы в открытую признался что охренел узнать что сей код который по религиозным соображениям я признал шедевром - был написан ребенком. а пока не... лучше дрючить и воспитывать хороших программистов. пятница же.
Сделал как вы просили, исправил ошибки, предупреждений не выдает, но все равно записывать не хочет. Все считает, если сделать вывод результата, то выводит правильно, но вот записывать не хочет, так же, только одно значение, а остальные остаются неизменными.
Все разобрался, ошибка и правда очень тупая. Дело в том, что в начале скрипта он у меня брал таблицу и читал из нее данные ($udata), потом выполнялся скрипт дальше, считал, записывал, потом опять считал, к самому первому результату прибавлял и опять записывал, затерая предыдущую запись. Короче что то, типа такого Поэтому и не было ожидаемых изменений. Добавлено спустя 2 минуты 6 секунд: А сделал вот так и все заработало Код (Text): ..... $udata=(mysqli_fetch_array(mysqli_query("SELECT * FROM `users` WHERE `login`='$log'"))); $ndol=$udata['dol']+$unpc['nagdol']+1; $nexp=$udata['exp']+$unpc['nagexp']+2; $nzol=$udata['zol']+$unpc['nagzol']; mysqli_query("UPDATE `users` SET `dol` = '$ndol', `zol`='$nzol', `exp`='$nexp' WHERE `login` = '$log'"); ..... Добавлено спустя 45 секунд: Ну это как пример, на самом деле там сложнее, но смысл такой.