Есть простая таблица в sql. И по нажатию на кнопку сохранить выполняется сохранение изменений. Запрос такой: $query = "UPDATE `comp` SET `comp_login`= '$comp_login', `comp_name` = '$comp_name', `see` = '$see', `p_status` = '$p_status', `comp_text` = '$comp_text' WHERE `id_comp` = '$id_comp' AND `id_clients` = '$id_clients'"; Значения переменных берутся с пост запроса. Примерно такие: $comp_login = mysql_real_escape_string($request['comp_login']); Вопрос: Мне нужно знать была ли обновлена строка. Даже если ничего не было изменено, то тоже нужно вернуть истину. Если проверить так: if(mysql_affected_rows() >0) , то возвращается ложь, если ничего не было изменено. А if(mysql_affected_rows() == -1) выполняется только, если есть конкретные ошибки. Т.е. в таблице есть стpока enum со значениями '0','1'. Если я в это поле отправляю текст, то ставит 0 и пишет нет ошибки. Как обычно проверяют такие условия?
Если id_clients или id_comp предполагают AUTO INCREMENT, попробуйте INSERT .... ON DUPLICATE KEY, после успешного запроса на обновление mysqli_insert_id возвратит id измененного значения. Мануал тут
Спасибо большое! Т.е. делаю INSERT .... ON DUPLICATE KEY и указываю id уже существующей обновляемой строки.
К сожалению от INSERT .... ON DUPLICATE KEY такой же результат, как и от update. Т.е. если не были изменены значения, то ничего не возвращается. Например, если сделаю условие: если mysqli_insert_id() ничего не возвратило - ошибка. То получается: открыли редактирование таблицы, ничего не поменяли, нажали сохранить, то выскачет ошибка. Можно сделать столбец с time(), но не хочется добавить лишний столбец.
Добавьте тогда условие. если запрос вернул false найдите id записи, типа PHP: if($query == false){ SELECT comp_login IN comp WHERE `comp_login`= '$comp_login' }
Чет мысль потерял, вчерашний старый новый не прошел бесследно. Суть в том, что MySQL в некоторых случаях не дает обновлять строки, это связанно с уникальными строками и ключами. К сожалению, я не помню точно как я решал эту проблему (поэтому пост мой всего лишь флуд бестлоковый), при добавлении новостей, я проверял таблицу с источниками, на совпадение, и если такое было ..../* начинаю вспоминать*/.... если совпадение было, а у этого поля был уникальный ключ, то изменить его не получалось, запрос возвращал результат сопоставляемый с false, и следом шла проверка, если запрос добавления переменной $источник возвращает false, то делаю запрос который возвращает id той записи, где поле содержит $источник <!-- Пойду за пивом, чет совсем тяжко, всех с новым годом!! -->