|
В базу не сохраняются изменения
|
|||
---|---|---|---|
#18+
Есть PHP-скрипт, который должен вносить изменения в БД MySQL. Версия СУБД MariaDB 10. Скрипт пишет подробные логи и по логам выходит, что все выполняется успешно, ошибок нет. Но и в базе данных нет добавленной записи. Скрипт выполняет такой запрос: Код: sql 1. 2. 3. 4.
В скрипт с помощью bind_param передаются параметры: Код: plaintext 1. 2. 3. 4. 5.
Затем скрипт выполняется. Код возврата успешный, в mysqli_insert_id возвращается идентификатор добавленной записи: Код: plaintext 1. 2.
Но в итоге в таблице нужной записи нет, запрос select * from tbl_global_port where code=20844 возвращает пустой результат. В чем может быть причина? Фрагменты исходников под спойлером. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 15:58 |
|
В базу не сохраняются изменения
|
|||
---|---|---|---|
#18+
Пробовал обернуть в транзакцию. Если просто добавить после запроса commit, то получается ошибка (поскольку нет активной транзакции). Если перед запросом выполнить begin_trans, то скрипт зависает на этой строке. При этом таблицы innodb. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 16:18 |
|
В базу не сохраняются изменения
|
|||
---|---|---|---|
#18+
Вручную выполнил запрос: Код: sql 1. 2. 3. 4. 5.
Так все сохранилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 16:31 |
|
В базу не сохраняются изменения
|
|||
---|---|---|---|
#18+
Воспроизводимый пример. Таблица: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Скрипт: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Вывод: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86.
Но при этом в таблице t1 - пусто. Не могу понять причину. Даже так: Код: php 1. 2.
все равно пусто. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 21:28 |
|
В базу не сохраняются изменения
|
|||
---|---|---|---|
#18+
Вроде бы нашел причину. У меня старая версия PHP (5.4) в ней mysqli несколько отличается от документации. Во-первых, по умолчанию транзакции не применяются (выключен autocommit). Во-вторых, commit принимает только один параметр, а в моей обертке в него передается три параметра (третьим параметром указывалось имя транзакции). Метод не срабатывал, а ошибка в логи не попадала. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 21:44 |
|
|
start [/forum/topic.php?fid=47&fpage=2&tid=1827807]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 253ms |
total: | 366ms |
0 / 0 |