Как вставить в конкретную строку в базе данных? - PullRequest
4 голосов
/ 27 марта 2009

Хорошо, моя база данных выглядит следующим образом:

id (основной - auto_increment), имя пользователя (уникальный), пароль, имя_файла, почта

У меня так, что пользователи регистрируют имя пользователя и пароль, и он добавляет их в базу данных, в первую очередь. Имя пользователя не может быть таким же, и когда оно добавляет данные в базу данных, оно автоматически увеличивает ID. Все это работает, но теперь я создал страницу настроек учетной записи, на которой пользователь может изменить свою электронную почту и имя, но это не работает. У меня есть пользователь вводить переменные в форме на одной странице, и он публикует свое имя как ufname (для обновления имени) и umail (для обновления почты). Затем на следующей странице, которая обновляет базу данных, у меня есть этот код:

session_start();
if(!isset($_SESSION['userId'])) {
die("&nbsp;You are not signed in. Please <a href='login.php'>click here</a> to sign in.");
} else {
$changeTXT = $_SESSION['username'];
$changeTXT = strtolower($changeTXT);
$changeTXT = ucfirst($changeTXT);
echo "Account Settings: <font color='red'>" . $changeTXT . "</font><br /><br />";

$ufname = $_POST['ufname'];
$umail = $_POST['umail'];

mysql_connect("localhost", "root", "sp1151") or die(mysql_error());


mysql_select_db("usersys") or die(mysql_error());

mysql_query("INSERT INTO userdb (id, username, password, fname, mail) VALUES('','','','$ufname', '$umail') ");


echo $umail . "<br /><br />";
echo $ufname;

}

О, у меня также есть пользователи, вошедшие в сессию.

Но как мне вставить имя и адрес электронной почты, которые пользователь вводит в свою строку в базе данных? Моя база данных называется userdb.

Ответы [ 5 ]

16 голосов
/ 27 марта 2009

Вам нужно выполнить запрос UPDATE, чтобы изменить существующую строку, а не INSERT.

$sql = "UPDATE userdb SET fname = '$ufname', mail = '$umail' WHERE id = $id";
mysql_query($sql);
8 голосов
/ 27 марта 2009

Вам нужно использовать оператор UPDATE вместо INSERT:

UPDATE userdb SET fname = ?, mail = ? WHERE username = ?;

Кроме того, вы должны серьезно рассмотреть возможность использования подготовленных операторов с параметрами запроса для предотвращения атак SQL-инъекций.

1 голос
/ 27 марта 2009

Попробуйте это UPDATE запрос:

Update 'tableName' set 'columnName' = 'newEntry' where 'rowID' = 'value'.
0 голосов
/ 27 марта 2009

Попробуйте это:

mysql_query("UPDATE userdb SET fname = '$ufname', umail = '$umail' WHERE id = '$_SESSION['userId']' ");
0 голосов
/ 27 марта 2009

Рассматривали ли вы вопрос SQL UPDATE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...