2013-06-24 2 views
1

Я создаю скрипт в PHP, который обновляет мои пользователи, user_personal и user_extra таблицу в MySQL, используя объединения. Когда я выполняю запрос с использованием mysql_query, он возвращает true, но таблицы не обновляются.mysql_query возвращает true при выполнении объединенного запроса UPDATE

Я читал онлайн, что mysql_query возвращает false, если он не работает, или ресурс MySQL, если он преуспевает, а также читайте, что это известная ошибка PHP.

Это вопрос, о котором идет речь.

UPDATE users 
     INNER JOIN user_personal 
     ON users.id = user_personal.id 
     INNER JOIN user_extra 
     ON users.id = user_extra.id 
     SET 
     users.email      = '" . $user->email . "',    
     user_extra.life_condition  = '" . $user->life_condition . "', 
     user_extra.keycode    = '" . $user->keycode . "', 
     user_extra.contact_person_phone = '" . $user->contact_person_phone . "', 
     user_extra.doctor    = '" . $user->doctor . "', 
     user_extra.doctor_phone   = '" . $user->doctor_phone . "', 
     user_extra.doctorpost_phone  = '" . $user->doctorpost_phone . "', 
     user_extra.condition    = '" . $user->condition . "', 
     user_extra.allergy    = '" . $user->allergy . "', 
     user_extra.goal     = '" . $user->goal . "', 
     user_extra.attention_officer  = '" . $user->attention_officer . "', 
     user_extra.primary_respon  = '" . $user->primary_respon . "', 
     user_personal.name    = '" . $user->name . "', 
     user_personal.last_name   = '" . $user->last_name . "', 
     user_personal.insertion   = '" . $user->insertion . "', 
     user_personal.birthdate   = '" . $user->birthdate . "', 
     user_personal.sex    = '" . $user->sex . "', 
     user_personal.street_name  = '" . $user->street_name . "', 
     user_personal.house_number  = '" . $user->house_number . "', 
     user_personal.postal_code  = '" . $user->postal_code . "', 
     user_personal.city    = '" . $user->city . "', 
     user_personal.country   = '" . $user->country . "', 
     user_personal.tel_nr    = '" . $user->tel_nr . "', 
     user_personal.contact_person  = '" . $user->contact_person . "' 
     WHERE user_personal.name   = '" . $user->name . "' 

Когда я выполнил меньше тестовую версию запроса с использованием одного INNER JOIN функции возвращается ресурс, одни и те же результаты, когда я сделать запрос без соединения. Мой сервер использует PHP 5.3.3 и Apache версии 2.2.15 с сервером MySQL 5.1.69.

Можете ли вы объяснить, как это происходит? И есть ли решение этой проблемы?

+0

Вы забыли совершить сделку? –

+0

Это не транзакция sql, а обычный запрос. –

+0

check 'mysql_affected_rows()' должно быть 0, что означает, что ваш оператор обновления не соответствует ни одному из строк. – DevZer0

ответ

0

Я прочитал документацию по PHP.net и узнал при использовании INSERT, UPDATE, DELETE, DROP метод возвращает истину или ложь

При использовании ВЫБРАТЬ, SHOW, DESCRIBE, EXPLAIN вы получите ресурс, когда запрос успешный и ложный, когда запрос завершился неудачно.

Спасибо за комментарии ребята.