Написал скрипт, который записывает в базу данных анкеты людей. Работало все хорошо, в базу записало 273 анкеты. И вот я начинаю замечать, что анкеты людьми заполняются, а число их в базе данных не растет. Посмотрел логи, ошибок нет. (А я еще по глупости не проверял данные "affected rows"). Методом проверки вычислил, что данные не записываются. Загрузил скрипт вместе с бд с хостинга на локалхост - таже картина, данные не записываются. После решил удалить все анкеты из базы - данные начали опять записываться... Не могу понять в чем дело. Кто-нибудь сталкивался с таким?
"с таким" - это с каким? Не добавляются анкеты в базу данных людей? То есть, вопрос только к тем, кто анкетами занимался? С чем должен был сталкиваться этот кто-нибудь? А что ты сделал для того, чтобы они там были?
Чебурген, при чем тут анкеты... что ты чешишь? вопрос был в том, по каким причинам данные могут перестать записываться в базу данных?
А, извини, я сначала не понял вопрос. Отвечаю. Данные могут перестать записываться в базу данных по такой, к примеру, причине, что отсутствует база данных. Кстати, я там задавал ещё один вопрос. Тебя не затруднит на него ответить? Спасибо. PS. прошу воздержаться от использования в мой адрес выражений типа "что ты чешишь".
извини за мое выражение. база данных присутствует. После оператора insert affected rows выдает мне 0. Но странно, почему-то если из базы данных, точннее из таблицы с анкетами удалить все данные, то все продолжает рабоать... з.ы. на какой вопрос тебе ответить? я насчитал 5 вопросов.
Что ты сделал для того, чтобы ошибки появлялись в логах? Учитывая тот факт, что сообщение об ошибке - это единственный способ узнать, почему у тебя не добавляются данные, выходит,что этот вопрос - самый главный. А предыдущим своим вопросом я тебе намекал на то, что причин могут быть миллионы. и гадать "отчего да почему" можно до пенсии
PHP: if ($db->affectedRows() <= 0) { error_log("can't write to database in ".$_SERVER['PHP_SELF'].", in line ".__LINE__, 0); die(ERROR_MSG); }
Сначала прочитай повнимательнее, а уже потом начинай критиковать человека, который писал что-то. Danilevsky а сколько весит база с анкетами?
мда... потрясающе информативно. а такая функция, как mysql_error() тебе неизвестна? если, конечно, речь идёт о mysql
Davil, да не много, таблица - 256 кб. вся база - 5мб. Я тоже сначала думал что места не хватает, переписал на свой локалхост - таже проблема. И еще, если оставить хотя-бы одну запись в таблице, все равно не записывает.
Какая структура таблицы и приведи пример запроса, который вставляет данные. И воспользуйся функцией mysql_error()
Код (Text): CREATE TABLE `p_interpreters` ( `int_interpreter_id` int(3) NOT NULL default '0', `int_surname` text collate utf8_unicode_ci NOT NULL, `int_name` text collate utf8_unicode_ci NOT NULL, `int_father_name` text collate utf8_unicode_ci, `int_date_of_birth` date NOT NULL default '0000-00-00', `int_gender` tinyint(1) NOT NULL default '0', `int_country_iso` varchar(2) collate utf8_unicode_ci NOT NULL default '', `int_city_id` int(3) NOT NULL default '0', `int_native_language_iso` varchar(2) collate utf8_unicode_ci NOT NULL default '', `int_native_language2_iso` varchar(2) collate utf8_unicode_ci default NULL, `int_home_tel` varchar(50) collate utf8_unicode_ci default NULL, `int_work_tel` varchar(50) collate utf8_unicode_ci default NULL, `int_cell_tel` varchar(50) collate utf8_unicode_ci default NULL, `int_fax` varchar(50) collate utf8_unicode_ci default NULL, `int_email` varchar(100) collate utf8_unicode_ci NOT NULL default '', `int_icq` varchar(20) collate utf8_unicode_ci default NULL, `int_msn` varchar(100) collate utf8_unicode_ci default NULL, `int_yahoo` varchar(100) collate utf8_unicode_ci default NULL, `int_skype` varchar(100) collate utf8_unicode_ci default NULL, `int_college` text collate utf8_unicode_ci NOT NULL, `int_college_country_iso` varchar(2) collate utf8_unicode_ci NOT NULL default '', `int_college_city_id` int(3) NOT NULL default '0', `int_college_date_in` varchar(15) collate utf8_unicode_ci NOT NULL default '', `int_faculty` text collate utf8_unicode_ci NOT NULL, `int_profession` text collate utf8_unicode_ci NOT NULL, `int_degree_id` tinyint(1) NOT NULL default '0', `int_college_date_out` varchar(15) collate utf8_unicode_ci NOT NULL default '', `int_additional_education` text collate utf8_unicode_ci, `int_language_iso` varchar(2) collate utf8_unicode_ci NOT NULL default '', `int_diploma` tinyint(1) default NULL, `int_experience_id` tinyint(1) NOT NULL default '0', `int_pages_per_day_id` tinyint(2) default NULL, `int_2nd_language_iso` varchar(2) collate utf8_unicode_ci default NULL, `int_checking_mail_id` tinyint(2) NOT NULL default '0', `int_passport` tinyint(1) default NULL, `int_driving_licence` tinyint(1) default NULL, `int_car` tinyint(1) default NULL, `int_date_of_registration` date NOT NULL default '0000-00-00', PRIMARY KEY (`int_interpreter_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Код (Text): $sth_int =& $db->prepare("INSERT INTO p_interpreters (int_interpreter_id, int_surname, int_name, int_father_name, int_date_of_birth, int_gender, int_country_iso, int_city_id, int_native_language_iso, int_native_language2_iso, int_home_tel, int_work_tel, int_cell_tel, int_fax, int_email, int_icq, int_msn, int_yahoo, int_skype, int_college, int_college_country_iso, int_college_city_id, int_college_date_in, int_faculty, int_profession, int_degree_id, int_college_date_out, int_additional_education, int_language_iso, int_diploma, int_experience_id, int_pages_per_day_id, int_2nd_language_iso, int_checking_mail_id, int_passport, int_driving_licence, int_car, int_date_of_registration) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $int_array = array($row['rqe_interpreter_id'], $row['rqe_surname'], $row['rqe_name'], $row['rqe_father_name'], $row['rqe_date_of_birth'], $row['rqe_gender'], $_POST['mn_country'], $_POST['mn_city'], $_POST['mn_native_language'], $_POST['mn_native_language2'], $row['rqe_home_tel'], $row['rqe_work_tel'], $row['rqe_cell_tel'], $row['rqe_fax'], $row['rqe_email'], $row['rqe_icq'], $row['rqe_msn'], $row['rqe_yahoo'], $row['rqe_skype'], $row['rqe_college'], $_POST['mn_college_country'], $_POST['mn_college_city'], $row['rqe_college_date_in'], $row['rqe_faculty'], $row['rqe_profession'], $_POST['mn_degree'], $row['rqe_college_date_out'], $row['rqe_additional_education'], $_POST['mn_language'], $row['rqe_diploma'], $row['rqe_experience'], $row['rqe_pages_per_day'], $_POST['mn_language2'], $row['rqe_checking_mail_id'], $row['rqe_passport'], $row['rqe_driving_licence'], $row['rqe_car'], $row['rqe_date_of_registration']); $db->execute($sth_int, $int_array);
Danilevsky из трёх вещей, которые у тебя попросил Mavir, ты осилил только одну. из одной вещи, которую у тебя просил я, ты не осилил ни одной. может быть, всё же, как-нибудь постараешься привести здесь SQL запрос и сообщение об ошибке?
Код (Text): mysql_query("INSERT INTO p_interpreters (int_interpreter_id, int_surname, int_name, int_father_name, int_date_of_birth, int_gender, int_country_iso, int_city_id, int_native_language_iso, int_native_language2_iso, int_home_tel, int_work_tel, int_cell_tel, int_fax, int_email, int_icq, int_msn, int_yahoo, int_skype, int_college, int_college_country_iso, int_college_city_id, int_college_date_in, int_faculty, int_profession, int_degree_id, int_college_date_out, int_additional_education, int_language_iso, int_diploma, int_experience_id, int_pages_per_day_id, int_2nd_language_iso, int_checking_mail_id, int_passport, int_driving_licence, int_car, int_date_of_registration) VALUES (".$row['rqe_interpreter_id'].", ".$row['rqe_surname'].", ".$row['rqe_name'].", ".$row['rqe_father_name'].", ".$row['rqe_date_of_birth'].", ".$row['rqe_gender'].", ".$_POST['mn_country'].", ".$_POST['mn_city'].", ".$_POST['mn_native_language'].", ".$_POST['mn_native_language2'].", ".$row['rqe_home_tel'].", ".$row['rqe_work_tel'].", ".$row['rqe_cell_tel'].", ".$row['rqe_fax'].", ".$row['rqe_email'].", ".$row['rqe_icq'].", ".$row['rqe_msn'].", ".$row['rqe_yahoo'].", ".$row['rqe_skype'].", ".$row['rqe_college'].", ".$_POST['mn_college_country'].", ".$_POST['mn_college_city'].", ".$row['rqe_college_date_in'].", ".$row['rqe_faculty'].", ".$row['rqe_profession'].", ".$_POST['mn_degree'].", ".$row['rqe_college_date_out'].", ".$row['rqe_additional_education'].", ".$_POST['mn_language'].", ".$row['rqe_diploma'].", ".$row['rqe_experience'].", ".$row['rqe_pages_per_day'].", ".$_POST['mn_language2'].", ".$row['rqe_checking_mail_id'].", ".$row['rqe_passport'].", ".$row['rqe_driving_licence'].", ".$row['rqe_car'].", ".$row['rqe_date_of_registration'].")") or die(mysql_error());
Danilevsky во-первых, то, что ты здесь написал - это не SQL запрос. а PHP код. Ты вообще, имеешь представление о языке SQL? Как выглядят запросы, составленные на нём? Если да, то приведи здесь, пожалуйста, SQL запрос. Если нет, то я попробую тебе объяснить разницу. Во-вторых, в этом коде у тебя ошибки. И сообщение об ошибке mysql говорит тебе именно о них. об ошибках, которые ты допустил в этом коде. а не о тех ошибках, которые у тебя возникают в том, старом коде. mysql_error() надо вызывать не с этим кодом, а со старым.
Спасибо всем за помощь! Проблема нашла свое решение. А все было предельно просто: в ключевое поле скрипт пытался записать одинаковые данные (дело в том что данные брались из другой таблицы, в которой была допущена ошибка)