PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 6
Граф Отправлено: 26 Января, 2017 - 22:00:44 • Тема: Чудеса конкатенации • Форум: Вопросы новичков

Ответов: 10
Просмотров: 643
OrmaJever пишет:
вы так и не показали код записи в бд

Он следующий:
PHP:
скопировать код в буфер обмена
  1. for ($i=0; $i < count($craftarr); $i++) {
  2. $user_craft = $userid.'_'.$craftarr [$i];
  3. $sql = "INSERT INTO `user_crafts` (
  4. `user_craft`, `item_id` , `user_id`, `isbest`, `craft_id`, `craft_price`, `auc_price` ,`updated`)
  5. VALUES ( '".$user_craft."', '".$itemarr[$i]."', '".$userid."', '".$bestcraft[$i]."', '".$craftarr[$i]."', '".$mycostarr[$i]."', '".$auccraft[$i]."' ,now())
  6. ON DUPLICATE KEY UPDATE `isbest` = '".$bestcraft[$i]."', `craft_price` = '".$mycostarr[$i]."', `auc_price` = '".$auccraft[$i]."',`updated` = now()"
  7. mysqli_query($link, $sql) or die(mysqli_error($link));
  8. }
Граф Отправлено: 26 Января, 2017 - 11:21:30 • Тема: Чудеса конкатенации • Форум: Вопросы новичков

Ответов: 10
Просмотров: 643
index пишет:
лог двух переменных (до конкатенации и после)

В этом случае наполовину это уже было сделано: в базу всегда пишутся обе половинки. Пишутся без ошибок, что говорит о том, что с ними всё норм.
Следуя вашему совету, я дописал такую вещь:
PHP:
скопировать код в буфер обмена
  1. $exuid = explode('_',$user_craft);
  2.         if($exuid[0] != $userid)
  3.         mysqli_query($link, "INSERT INTO `errors`.... итд")

Сегодня утром обнаружил кучу записей с той же ошибкой, и при этом абсолютно пустой лог.
Я так понимаю, что какие-то "чудеса" происходят на этапе записи в БД, поскольку php не показывает никаких симптомов...
Граф Отправлено: 25 Января, 2017 - 18:31:56 • Тема: Чудеса конкатенации • Форум: Вопросы новичков

Ответов: 10
Просмотров: 643
index пишет:
Почему нельзя вывести эту переменную перед записью в БД?

Её можно вывести. Просто у меня ошибка не воспроизводится. Выводится нормальная переменная, но и в базу нормальная попадает.
Я уже и логинился под этими проблемными id. Вбестолку. У них проблема появляется, у меня нет. Огорчение
Граф Отправлено: 25 Января, 2017 - 17:38:45 • Тема: Чудеса конкатенации • Форум: Вопросы новичков

Ответов: 10
Просмотров: 643
OrmaJever пишет:
то есть вы уверены что во время записи в переменой было значение 9223372036854775807_10021, а не 11282821117685064658_10021 ?

По крайней мере, судя по тем же записям в бд, я уверен, что $userid = '9223372036854775807' и $craft = '10021';
К сожалению, проблема не воспроизводится, я не могу вывести и посмотреть переменную $user_craft. (точнее могу, но она всегда в порядке). Проблему я наблюдаю уже записанной в БД. Не всегда, периодически.
Граф Отправлено: 25 Января, 2017 - 17:29:31 • Тема: Чудеса конкатенации • Форум: Вопросы новичков

Ответов: 10
Просмотров: 643
OrmaJever пишет:
Смотрите что вы туда пишите.

Я ожидал, что он запишет 9223372036854775807_10021.
Записывая вместо этого 11282821117685064658_10021, господин php наверное чем-то мотивировался?...
Граф Отправлено: 25 Января, 2017 - 17:10:04 • Тема: Чудеса конкатенации • Форум: Вопросы новичков

Ответов: 10
Просмотров: 643
Здравствуйте. Прошу помощи. Огорчение
Имеется примерно такой код:
PHP:
скопировать код в буфер обмена
  1. $userid = '9223372036854775807';
  2. $craft = '10021';
  3. $user_craft = $userid.'_'.$craft;


Все 3 переменные записываются в БД.
В итоге в колонке `user_craft`(тип - varchar) вижу '11282821117685064658_10021'.
Две другие переменные проблем не имеют.
Проблема не постоянна, возникает периодически.
Почему это может происходить?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB