2015-03-05 3 views
0

Я пытаюсь обновить записи в базе данных MySQL с использованием кода PHP. Проблема в том, что если есть только одна запись, обновление работает, но для более чем одной записи в таблице один и тот же код не обновляет ни один из них. Я не знаю почему. Вот часть кода PHP от страницы edit.php («пользователь» может генерировать путаницу, его о пользователе администратора, который регистрирует его паролем и может изменить данные других пользователей)Невозможно обновить записи из базы данных MySQL с помощью PHP

session_start(); 
$user = $_SESSION['username']; 
$pass = $_SESSION['password']; 

if (isset($_POST ['updateuser'])){ 
$UpdateQuery="UPDATE user SET email='$_POST[email]', name='$_POST[name]', surname='$_POST[surname]', grade='$_POST[grd]'"; 
mysql_query($UpdateQuery, $link);}; 

if(isset($_POST ['Edit'])) 
{ $sql = "SELECT * FROM user WHERE idUser = '$user'"; 
    $p = mysql_query($sql, $link); 
    echo '<table border=1 > 
    <tr> 
    <th>email</th> 
    <th>name</th> 
    <th>surname</th> 
    <th>grade</th> 
    </tr>'; 
    while($record=mysql_fetch_array($p)){ 
    echo '<form action=edit.php method=post>'; 
    echo '<tr>'; 
    echo '<td><input type=text name=email value=" '.$record['email']. '"></td>'; 
    echo '<td><input type=text name=name value=" '.$record['name']. '"></td>'; 
    echo '<td><input type=text name=surname value=" '.$record['surname']. '"></td>'; 
    echo '<td><input type=text name=grd value=" '.$record['grade']. '"></td>'; 
    echo '<td><input type=hidden name=hidden value=" ' .$record['idUser']. '"></td>'; 
    echo '<td><input type=submit name=updateuser value=Update></td>'; 
      echo '</form>'; 
     } 
     echo '</table>';} 
+0

Вы должны попробовать добавить '' 'WHERE ID = ...' '' в SQL, чтобы указать, какие строки для обновления. Кроме того, вы должны прочитать что-нибудь о SQL Injection. – Keo

+0

@ Keo записи будут обновлены, если вы не дадите никаких условий. –

+0

@habibulhaq вы уверены? Можно было бы подумать, что при выполнении этого с php будет существовать какой-то механизм безопасности. – Keo

ответ

1

вы забыли добавить условное положение в обновлении запроса. Попробуйте вместо

$UpdateQuery="UPDATE user SET email='$_POST[email]', name='$_POST[name]', surname='$_POST[surname]', grade='$_POST[grd]' WHERE idUser = '$user'"; 

из

$UpdateQuery="UPDATE user SET email='$_POST[email]', name='$_POST[name]', surname='$_POST[surname]', grade='$_POST[grd]'"; 
0

Ваше обновление запрос не пункт WHERE, использование somting как этот

$UpdateQuery="UPDATE user SET email='$_POST[email]', name='$_POST[name]', surname='$_POST[surname]', grade='$_POST[grd]' WHERE idUser = '$user'"; 
Смежные вопросы