Всем привет! Запись везде почти происходит, но в 1-2 местах ни как. Вот приблизительный код(основной слишком большой чтобы приводить): PHP: $arr13= array('100','93','94'); $StrSerialize= json_encode($arr13); mysqli_query($myConnect, "INSERT INTO `Fron` (id, Fron) VALUES ('{$str}', '{$StrSerialize}') "); в коде выше произошла начальное заполнение базы, с этим проблем нет точно и большая часть программы с такой базой работает, далее: читаем с базы: PHP: $arrFron= json_decode($arr[Fron]); изменяем данные (тут и начинаются проблемы, не с изменением, а с записью далее): PHP: $arrFron[]= strval($arrSmegnie2[$i9]); запись в базу: PHP: $StrSerialize= json_encode($arrFron); mysqli_query($myConnect, "UPDATE `{$Fron}` SET `Fron` = '{$StrSerialize}' WHERE `id` = '{$id}' LIMIT 1 "); Запись вообще не происходит, проблема в изменении данных, по идее все должно работать, я думаю косячные функции типа json_encode и Serialize, есть ли другие методы записи массива в базу? Не хочется писать свой json_encode. Данные записи-чтения: После начального заполнения базы имеем: ["94"] после изменения данных при последующей записи в базу имеем: ["94","100"] То есть перед конечной записью(та которая не работает) я проверяю что пишу и меня устраивает, так как ["94","100"] это то что нужно, но запись не происходит. Возможно там пробелы или спец символы, которые не видны, ни знаю почему не пишет. Скорее что-то происходит на стадии изменения данных, но там ни чего не должно происходить, так как я далеко не первый раз программирую и не представляю как более профессионально там написать код, там нет или почти нет вариантов. Вину валю на json_encode. Поле Fron имеет тип text.
Cделал так: $str= str_replace("'","\'",$str); Не помогло. Сделал так: $str= mysql_real_escape_string($str); Пишет: Предупреждение : mysql_real_escape_string () [ function.mysql-реального выхода строка ]: Доступ запрещен для пользователя 'a3932495' @ "локальный" (не используя пароль: НЕТ) в /home/ Знаю что может быть такое, как правильно?
а что происходит? Логи может посмотришь? А зачем массив писать в базу? Потом надеюсь поиск по этим значениям в базе не будешь делать?
запрос PHP: $StrSerialize= json_encode($arrFron); mysqli_query($myConnect, "UPDATE `{$Fron}` SET `Fron` = '{$StrSerialize}' WHERE `id` = '{$id}' LIMIT 1 "); Вообще бывает что раз запишет и все, если взять другие данные, то этим запросом записываются. Запускаю на хостинге, но на том хостинге сейчас по моему вообще отключили логи. Писать в базу нужно для сохранения данных и к этим данным с разных скриптов происходит обращение, если есть другой вариант - пишите, за ранее спасибо. Делаю поиск, в том числе выбрав строку из базы, сделав массив, найдя значение в массиве, далее добавив другое значение в массив, далее массив в строку и в базу.
тебе надо сначала скопить его в переменную, а потом только скармливать функции. Вот тогда ты сможешь вывести значение этой переменной, и посмотрим на запрос.
Сделал, не работает, echo вывел: UPDATE `Fron_5ba0dc0b4bf9a9b611dd2773c80239ce` SET `Fron` = '100,93,94,200' WHERE `id` = '00001ka8d9cc0' LIMIT 1 Выходит запрос правильный? Была строка 100,93,94, в запросе правильно произошло добавление цифры 200: 100,93,94,200 Правда все-равно ни знаю правильный ли запрос. Почему запись не произошла?
Опечатки не может быть, ведь другие данные пишутся. Поясните пожалуйста что значит сие: ТС-у: - INSERT INTO `Fron` ... - UPDATE `Fron_5ba0dc0b4bf9a9b611dd2773c80239ce` ...
Попробуй получившиеся запрос выполнить в PHPMyAdmin и посмотреть если не будет ошибок и всё сработает как тебе нужно. Вставляешь значит в таблицу с другим именем?