Иногда не записываются или не обновляются данные в БД. Подскажите?

#1 4 августа 2012 в 20:33
Собственно столкнулся с одной проблемкой в плане работы с БД — при добавлении информации или обновлении ее не всегда данные обновляются или добавляются. Речь не про ИЦМС, а про фактически самопис одного человека.

Ранее все работало стабильно, но последний месяц чтото вот проблемки возникают. При этом например новости добавляются отлично, а вот данные в некоторые другие таблицы проблематично. Сначало думал, что может связано с размером INT или MEDIUMINT

но изменив все на максимум, проблема не решилась

Подскажите куда копать или что смотреть?

Было бы просто, когда проблема возникала бы постоянно, а здесь через раз-два.
#2 4 августа 2012 в 21:06
т.е например добавляю фильм в афишу, пытаюсь добавить сеансы, а они не записываются вообще! удаляю фильм, создаю запись снова и вдруг сеансы начинают добавляться… и так постоянно на рандом.
#3 4 августа 2012 в 21:18
Так вам не смогут помочь. Нужен доступ к базе и файлам движка
#4 4 августа 2012 в 21:45
хотя бы домыслы какие могут быть?
#5 4 августа 2012 в 21:54
Домыслы? Самое простое — попытка записать текстовые символы в поля INT. Если не так, то без доступа к телу не разобраться.
#6 4 августа 2012 в 22:01
вот выдержка основы файла добавления сессий

  1.  
  2. if (isset($_GET['status'])) {
  3. if ($_GET['status'] == "sn") {
  4.  
  5. if (isset($_GET['org'])) {
  6.  
  7. if ($_GET['org'] == '0') {
  8. $message = '<strong style="color: red">Не выбрано учреждение!</strong>';
  9. } else {
  10. $data = dbarray($result = dbquery("SELECT name FROM ".DB_PREFIX."afisha_organisation WHERE id='".$_GET['org']."'"));
  11. $message = '<strong style="color: green">Сеансы для &laquo;'.$data['name'].'&raquo; добавлены</strong>';
  12. }
  13. }
  14. }
  15. if ($message) { echo "<div class='admin-message'>".$message."</div>\n"; }
  16. }
  17.  
  18.  
  19. if (isset($_POST['saved'])) {
  20.  
  21. $org_id = intval($_POST['org_id']);
  22. $data = dbarray($result = dbquery("SELECT name FROM ".DB_PREFIX."afisha_organisation WHERE id='".$_POST['org_id']."'"));
  23. $org_name = $data['name'];
  24. $content_name = $_POST['content_name'];
  25. $contenttype = $_POST['contenttype'];
  26.  
  27. $search[] = array();
  28. $start = array();
  29. $end = array();
  30.  
  31. for ($q = 0; $q < $_POST['opt']; $q++) {
  32.  
  33. $datestamp = $_POST['datestamp'][$q];
  34. $start_sessions = $end_sessions = '';
  35.  
  36. $morning1 = trim(stripinput($_POST['morning1'][$q])); if ($morning1) { $search[$q][] = $morning1; }
  37. $morning2 = trim(stripinput($_POST['morning2'][$q])); if ($morning2) { $search[$q][] = $morning2; }
  38. $morning3 = trim(stripinput($_POST['morning3'][$q])); if ($morning3) { $search[$q][] = $morning3; }
  39. $morning4 = trim(stripinput($_POST['morning4'][$q])); if ($morning4) { $search[$q][] = $morning4; }
  40. $morning5 = trim(stripinput($_POST['morning5'][$q])); if ($morning5) { $search[$q][] = $morning5; }
  41. $morning6 = trim(stripinput($_POST['morning6'][$q])); if ($morning6) { $search[$q][] = $morning6; }
  42.  
  43. $day1 = trim(stripinput($_POST['day1'][$q])); if ($day1) { $search[$q][] = $day1; }
  44. $day2 = trim(stripinput($_POST['day2'][$q])); if ($day2) { $search[$q][] = $day2; }
  45. $day3 = trim(stripinput($_POST['day3'][$q])); if ($day3) { $search[$q][] = $day3; }
  46. $day4 = trim(stripinput($_POST['day4'][$q])); if ($day4) { $search[$q][] = $day4; }
  47. $day5 = trim(stripinput($_POST['day5'][$q])); if ($day5) { $search[$q][] = $day5; }
  48. $day6 = trim(stripinput($_POST['day6'][$q])); if ($day6) { $search[$q][] = $day6; }
  49. $day7 = trim(stripinput($_POST['day7'][$q])); if ($day7) { $search[$q][] = $day7; }
  50. $day8 = trim(stripinput($_POST['day8'][$q])); if ($day8) { $search[$q][] = $day8; }
  51.  
  52. $evening1 = trim(stripinput($_POST['evening1'][$q])); if ($evening1) { $search[$q][] = $evening1; }
  53. $evening2 = trim(stripinput($_POST['evening2'][$q])); if ($evening2) { $search[$q][] = $evening2; }
  54. $evening3 = trim(stripinput($_POST['evening3'][$q])); if ($evening3) { $search[$q][] = $evening3; }
  55. $evening4 = trim(stripinput($_POST['evening4'][$q])); if ($evening4) { $search[$q][] = $evening4; }
  56. $evening5 = trim(stripinput($_POST['evening5'][$q])); if ($evening5) { $search[$q][] = $evening5; }
  57. $evening6 = trim(stripinput($_POST['evening6'][$q])); if ($evening6) { $search[$q][] = $evening6; }
  58. $evening7 = trim(stripinput($_POST['evening7'][$q])); if ($evening7) { $search[$q][] = $evening7; }
  59. $evening8 = trim(stripinput($_POST['evening8'][$q])); if ($evening8) { $search[$q][] = $evening8; }
  60.  
  61. $night1 = trim(stripinput($_POST['night1'][$q])); if ($night1) { $search[$q][] = $night1; }
  62. $night2 = trim(stripinput($_POST['night2'][$q])); if ($night2) { $search[$q][] = $night2; }
  63. $night3 = trim(stripinput($_POST['night3'][$q])); if ($night3) { $search[$q][] = $night3; }
  64. $night4 = trim(stripinput($_POST['night4'][$q])); if ($night4) { $search[$q][] = $night4; }
  65. $night5 = trim(stripinput($_POST['night5'][$q])); if ($night5) { $search[$q][] = $night5; }
  66. $night6 = trim(stripinput($_POST['night6'][$q])); if ($night6) { $search[$q][] = $night6; }
  67.  
  68. if ($org_id != 0 && (
  69. $morning1 || $morning2 || $morning3 || $morning4 || $morning5 || $morning6 ||
  70. $day1 || $day2 || $day3 || $day4 || $day5 || $day6 || $day7 || $day8 ||
  71. $evening1 || $evening2 ||$evening3 || $evening4 || $devening5 ||
  72. $evening6 ||$evening7 || $evening8 ||
  73. $night1 ||$night2 || $night3|| $night4 ||$night5 || $night6)) {
  74.  
  75.  
  76. $start[$q] = array_shift($search[$q]);
  77. $end[$q] = array_pop($search[$q]);
  78.  
  79. $startdate = explode(":", $start[$q]);
  80. $hours_start = $startdate['0'
#7 4 августа 2012 в 23:33
как вообще проверить, передаются какие то данные или нет? БД вообще не обновляет данные
#8 4 августа 2012 в 23:58
Добавьте в скрипт вывод ошибок
  1. echo "Ошибка базы данных. MySQL пишет:", mysql_error();
и посмотрите, на что ругается Мускл.
#9 4 августа 2012 в 23:58


$result = dbquery("INSERT INTO ".DB_PREFIX."afisha_sessions (item_id, contenttype, org_id, org_name, content_name, datestamp, morning1, morning2, morning3, morning4, morning5, morning6, day1, day2, day3, day4, day5, day6, day7, day8, evening1, evening2, evening3, evening4, evening5, evening6, evening7, evening8, night1, night2, night3, night4, night5, night6, start_sessions, end_sessions) VALUES ('".intval($_GET['id'])."', '$contenttype', '$org_id', '$org_name', '$content_name', '$datestamp', '$morning1', '$morning2', '$morning3', '$morning4', '$morning5', '$morning6', '$day1', '$day2', '$day3', '$day4', '$day5', '$day6', '$day7', '$day8', '$evening1', '$evening2', '$evening3', '$evening4', '$evening5', '$evening6', '$evening7', '$evening8', '$night1', '$night2', '$night3', '$night4', '$night5', '$night6', '$start_sessions', '$end_sessions')");

yury

эта строчка добавляет инфу в БД, в переменной $result лежит результат выполнения. Если проблема собственно в добавлении — можно следующей строкой вывести этот результат, ну примерно так

  1. if ($result) {echo 'Успешно добавили запись';}
  2. else {echo 'Не удалось добавить запись';}
#10 5 августа 2012 в 00:10
видимо пишет-не удалось добавить запись.

вот так прописал уведомления:

  1. if (isset($_GET['status'])) {
  2. if ($_GET['status'] == "sn") {
  3. $message = 'Сеансы изменены!';
  4. }
  5. if ($message) { echo "<div class='admin-message'>".$message."</div>\n"; }
  6. }else {echo 'Не удалось добавить запись';
  7. echo "Ошибка базы данных. MySQL пишет:", mysql_error();}
MySQL ошибок не пишет. оставил пустое место после двоеточия
#11 5 августа 2012 в 00:14
если быть точнее то вот этот файл в первую очередь меня беспокоит:

  1.  
  2. if (!checkrights("AFI") || !defined("iAUTH") || $_GET['aid'] != iAUTH) { die("Access Denied"); }
  3. if (!isset($_GET['id']) || !isnum($_GET['id'])) { redirect(DIR.'admin/index.php'.$aidlink); }
  4.  
  5. add_to_head ('<script language="JavaScript" src="'.DIR.'js/jquery.timePicker.js" type="text/JavaScript"></script>');
  6.  
  7. if (isset($_GET['status'])) {
  8. if ($_GET['status'] == "sn") {
  9. $message = 'Сеансы изменены!';
  10. }
  11. if ($message) { echo "<div class='admin-message'>".$message."</div>\n"; }
  12. }else {echo 'Не удалось добавить запись';
  13. echo "Ошибка базы данных. MySQL пишет:", mysql_error();}
  14.  
  15.  
  16.  
  17. if (isset($_POST['saved'])) {
  18.  
  19. $search[] = array();
  20. $start = array();
  21. $end = array();
  22.  
  23.  
  24. for ($q = 0; $q < $_POST['opt']; $q++) {
  25.  
  26. $datestamp = $_POST['datestamp'][$q];
  27. $start_sessions = $end_sessions = '';
  28.  
  29. $morning1 = trim(stripinput($_POST['morning1'][$q])); if ($morning1) { $search[$q][] = $morning1; }
  30. $morning2 = trim(stripinput($_POST['morning2'][$q])); if ($morning2) { $search[$q][] = $morning2; }
  31. $morning3 = trim(stripinput($_POST['morning3'][$q])); if ($morning3) { $search[$q][] = $morning3; }
  32. $morning4 = trim(stripinput($_POST['morning4'][$q])); if ($morning4) { $search[$q][] = $morning4; }
  33. $morning5 = trim(stripinput($_POST['morning5'][$q])); if ($morning5) { $search[$q][] = $morning5; }
  34. $morning6 = trim(stripinput($_POST['morning6'][$q])); if ($morning6) { $search[$q][] = $morning6; }
  35.  
  36. $day1 = trim(stripinput($_POST['day1'][$q])); if ($day1) { $search[$q][] = $day1; }
  37. $day2 = trim(stripinput($_POST['day2'][$q])); if ($day2) { $search[$q][] = $day2; }
  38. $day3 = trim(stripinput($_POST['day3'][$q])); if ($day3) { $search[$q][] = $day3; }
  39. $day4 = trim(stripinput($_POST['day4'][$q])); if ($day4) { $search[$q][] = $day4; }
  40. $day5 = trim(stripinput($_POST['day5'][$q])); if ($day5) { $search[$q][] = $day5; }
  41. $day6 = trim(stripinput($_POST['day6'][$q])); if ($day6) { $search[$q][] = $day6; }
  42. $day7 = trim(stripinput($_POST['day7'][$q])); if ($day7) { $search[$q][] = $day7; }
  43. $day8 = trim(stripinput($_POST['day8'][$q])); if ($day8) { $search[$q][] = $day8; }
  44.  
  45. $evening1 = trim(stripinput($_POST['evening1'][$q])); if ($evening1) { $search[$q][] = $evening1; }
  46. $evening2 = trim(stripinput($_POST['evening2'][$q])); if ($evening2) { $search[$q][] = $evening2; }
  47. $evening3 = trim(stripinput($_POST['evening3'][$q])); if ($evening3) { $search[$q][] = $evening3; }
  48. $evening4 = trim(stripinput($_POST['evening4'][$q])); if ($evening4) { $search[$q][] = $evening4; }
  49. $evening5 = trim(stripinput($_POST['evening5'][$q])); if ($evening5) { $search[$q][] = $evening5; }
  50. $evening6 = trim(stripinput($_POST['evening6'][$q])); if ($evening6) { $search[$q][] = $evening6; }
  51. $evening7 = trim(stripinput($_POST['evening7'][$q])); if ($evening7) { $search[$q][] = $evening7; }
  52. $evening8 = trim(stripinput($_POST['evening8'][$q])); if ($evening8) { $search[$q][] = $evening8; }
  53.  
  54. $night1 = trim(stripinput($_POST['night1'][$q])); if ($night1) { $search[$q][] = $night1; }
  55. $night2 = trim(stripinput($_POST['night2'][$q])); if ($night2) { $search[$q][] = $night2; }
  56. $night3 = trim(stripinput($_POST['night3'][$q])); if ($night3) { $search[$q][] = $night3; }
  57. $night4 = trim(stripinput($_POST['night4'][$q])); if ($night4) { $search[$q][] = $night4; }
  58. $night5 = trim(stripinput($_POST['night5'][$q])); if ($night5) { $search[$q][] = $night5; }
  59. $night6 = trim(stripinput($_POST['night6'][$q])); if ($night6) { $search[$q][] = $night6; }
  60.  
  61.  
  62. if (isset($_POST['delete'][$q])) {
  63.  
  64. $result = dbquery("DELETE FROM ".DB_PREFIX."afisha_sessions WHERE id='".$_POST['sess_id'][$q]."'");
  65.  
  66. } else if (
  67. $morning1 || $morning2 || $morning3 || $morning4 || $morning5 || $morning6 ||
  68. $day1 || $day2 || $day3 || $day4 || $day5 || $day6 || $day7 || $day8 ||
  69. $evening1 || $evening2 ||$evening3 || $evening4 || $devening5 || $evening6 ||$evening7 || $evening8 ||
  70. $night1 ||$night2 || $night3|| $night4 ||$night5 || $night6) {
  71.  
  72.  
  73. $start[$q] = array_shift($search[$q]);
  74. $end[$q] = array_pop($search[$q]);
  75.  
  76. $startdate = explode(":", $start[$q]);
  77. $hours_start = $startdate['0'];
  78. $minutes_start = $startdate['1'
#12 5 августа 2012 в 00:17


видимо пишет-не удалось добавить запись.

вот так прописал уведомления:

  1. if (isset($_GET['status'])) {
  2. if ($_GET['status'] == "sn") {
  3. $message = 'Сеансы изменены!';
  4. }
  5. if ($message) { echo "".$message."\n"; }
  6. }else {echo 'Не удалось добавить запись';
  7. echo "Ошибка базы данных. MySQL пишет:", mysql_error();}
MySQL ошибок не пишет. оставил пустое место после двоеточия

yury

ээээ, ну в данном контексте mysql_error() всегда будет возвращать пустоту — там запросов то и не было. Это надо выводить ПОСЛЕ запроса на добавление записи, а не просто вверху файла. А добавление — это insert... — вот после него и надо проверять результат.

Может до самого запроса и не доходит… а может входные данные некорректные и он реально возвращает ошибку.
#13 5 августа 2012 в 00:56
ставил после UPDATE

  1. $result = dbquery("UPDATE ".DB_PREFIX."afisha_sessions SET
  2. morning1='$morning1',
  3. morning2='$morning2',
  4. morning3='$morning3',
  5. morning4='$morning4',
  6. morning5='$morning5',
  7. morning6='$morning6',
  8. day1='$day1',
  9. day2='$day2',
  10. day3='$day3',
  11. day4='$day4',
  12. day5='$day5',
  13. day6='$day6',
  14. day7='$day7',
  15. day8='$day8',
  16. evening1='$evening1',
  17. evening2='$evening2',
  18. evening3='$evening3',
  19. evening4='$evening4',
  20. evening5='$evening5',
  21. evening6='$evening6',
  22. evening7='$evening7',
  23. evening8='$evening8',
  24. night1='$night1',
  25. night2='$night2',
  26. night3='$night3',
  27. night4='$night4',
  28. night5='$night5',
  29. night6='$night6',
  30. start_sessions='$start_sessions',
  31. end_sessions='$end_sessions' WHERE id='".$_POST['sess_id'][$q]."'");
  32.  
вообще не выдает ничего, просто обновляет страницу и сеансы остаются без изменений. Раньше все работало
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.