Обновление данных в БД через PHP

Статус
Закрыто для дальнейших ответов.

got16

Active Member
Регистрация
19.05.2011
Сообщения
30


Это профиль пользователя
Задача такая
1 обновление данных в базе ( пробовал вот так:
Код:
$result5 = mysql_query("UPDATE users SET name='$name' WHERE name='$old_name'",$db);//обновляем в базе данные пользователя
не получилось)
2 возможно ле сделать так чтобы в БД заносились только измененные строчки а текоторые не изменили просто пропускались?
 

mrlasking

$_GET['rich'] or die('trying');
Регистрация
22.05.2012
Сообщения
323
Ход мысли, изначально, ошибочный.

Нужно хотя бы так:
1. Получаем ID пользователя из сессии, например.
2. По ID получаем массив данных из базы.
3. Подставляем в форму, для редактирования.
4. При отправке формы, сверяем отправленные данные с массивом из п.2 и находим все отличия
5. ВАЖНО! Экранируем, чистим, и извращаемся любым удобным способом над введенными данными, ибо безопасность!
6. Забрасываем изменения в базу по ID пользователя, а не по его имени, которое может меняться :-/

profit!
 

CamaroSS

Well-Known Member
Регистрация
21.02.2012
Сообщения
176
Если этот проект только начинается, лучше сразу перейти на API, которое поддерживает параметризованные запросы и юзать их, чтобы меньше извращаться))) Ну и не забывать отфильтровывать теги там, где их быть не должно.

возможно ли сделать так чтобы в БД заносились только измененные строчки а те, которые не изменили просто пропускались?
Можно, только при сравнении нужно учитывать возможные слэши/спецсимволы. А вообще ничего страшного в обновлении всех полей не вижу. Телодвижений меньше будет.
 

got16

Active Member
Регистрация
19.05.2011
Сообщения
30
спасибо за ответы! буду следовать Вашим рекомендациям. вопрос по безопасности сидит в голове постоянно, но так как я новичок (совсем новичок :rolleyes:)

у меня еще такой момент, мне надо вот такое извращение: при изменении данных профиля если email остается не изменным то вносим все кроме емайла, а если майл изменен то сначала проверяем есть ли такой в базе, если есть то пишем что майл уже занят, а если не занят то обновляем все что ввел пользователь. Ну или весь массив данных перезаписываем как говорили выше

мне знакомый написал код, только что то не дописал. он переписал его по своему и в таком вариант я не понимаю вообще там ничего толком.Посмотрите?
 
Статус
Закрыто для дальнейших ответов.
Верх Низ