2013-11-27 3 views
0

Я пытаюсь получить код для обновления некоторых данных, которые были выбраны пользователем.Обновление базы данных в php

Что происходит, так это то, что он обновляет все в этом столбце до значения, которое пользователь отредактировал.

Например, У меня есть bob, bob1, bob2, и я хочу выбрать bob1 для редактирования. Затем я редактирую его, так что bob1 теперь fred1, когда он обновляет его, обновляет каждое значение до fred1. Итак, есть 3 fred1.

Может кто-нибудь помочь? Пожалуйста.

update.php

<?php 
session_start(); 
include_once 'connection.php'; 

if (isset($_POST['update'])) { 
    $success = updateValue($_POST['name']); 


    if (!$success) 
     echo 'Sorry, the update failed'; 
    session_destroy(); 
} 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Main Page</title> 
    </head> 
    <body> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method='post'> 
     View a Member's Details: 
     <select name='members' value='members'id="Mmembers">  
      <?php 
      $results = getResults('members'); 
      if ($results) { 
       foreach ($results as $row) { 
        echo '<option value="' . $row['member_id'] . '">' . $row['name'] . '</option>'; 
       } 
      } 
      else 
       echo '<option value="0"0"> No Data</option>'; 
      ?> 

     </select> 

     <input type="submit" id="submit" value="Submit"/> 
     <br/> 
     <br/> 
    </form> 

    <?php 
    if (isset($_POST['members'])) { 


     $ResultSet = getMemberResults(($_POST['members'])); 
     echo "<h1> Member Details. </h1>"; 
     echo "<table border='1' cellpadding='6'>"; 
     echo "<tr> <th>Id</th> <th>Name</th>"; 

     foreach ($ResultSet as $row) { 
      echo "<form action=update.php method=POST>"; 
      echo "<tr>"; 
      echo "<td>" . "<input type=text name=member_id value=" . $row ['member_id'] . " </td>"; 
      echo "<td>" . "<input type=text name=name value=" . $row ['name'] . "  </td>"; 
      echo "<td>" . "<input type=submit name=update value=update" . " </td>"; 
      echo "</tr>"; 
      echo "</form>"; 
     } 
     echo "</table>"; 
    } 
    ?> 

</body> 
</html> 

connection.php

<?php 

//Connect to the database 
function getSQLConnection() { 
    $mysqlConnection = new PDO('mysql:host=localhost;dbname=', "root", ""); 

    return $mysqlConnection; 
} 

//Get all results from members table 
function getResults($tablename) { 
    $sql = "SELECT * FROM " . $tablename; 

    $mysqlConnection = getSQLConnection(); 

    $ResultSet = $mysqlConnection->query($sql); 
    return $ResultSet; 
} 


function getMemberResults($id) { 
    $sql = "SELECT * FROM members WHERE members.member_id = '$id'"; 

    $mysqlConnection = getSQLConnection(); 

    $ResultSet = $mysqlConnection->query($sql); 
    return $ResultSet; 
} 

function updateValue($id) { 
    $sql = "UPDATE members SET name='$id' WHERE members.member_id = members.member_id"; 

    $mysqlConnection = getSQLConnection(); 

    $ResultSetting = $mysqlConnection->query($sql); 
    return $ResultSetting; 
} 

?> 
+0

Я достаю имя дб, для безопасности. –

+0

@WayneC Куда? –

+0

Извините, проигнорируйте это – wgcrouch

ответ

2

Ваш SQL UPDATE неверно.

WHERE members.member_id = members.member_id 

выше, где всегда будет решать справедливо для всех строк, что делает ваш звонок

UPDATE members SET name='$id' 

Вы должны установить имя, а также добавить членов идентификатор (уникальный идентификатор) в WHERE причины ,

/** give functions descriptive names **/ 
function updateMemberName($id, $name) { 
    $sql = "UPDATE members SET name='$name' WHERE id = '$id'"; 
    //... 

update.php

Вы тогда просто нужно будет изменить вызов функции

if (isset($_POST['update'])) { 
    $success = updateMemberName($_POST['member_id'], $_POST['name']); 
+0

Как это будет работать с бит isset на update.php? @AlexP –

+0

@BobMarks Я обновил свой ответ – AlexP

0
function updateValue($id) { 
$sql = "UPDATE members SET name='$id' WHERE members.member_id = members.member_id"; 

Это эквивалентно

UPDATE members SET name='$id' 

как где пункт имеет значение TRUE, для всех строк

0

Отвечая только чтобы заставить его работать, как вы ожидаете его, эта функция:

function updateValue($id) { 
$sql = "UPDATE members SET name='$id' WHERE members.member_id = members.member_id"; 
... 
} 

должно быть

function updateValue($id, $value) { 
$sql = "UPDATE members SET name='$value' WHERE members.member_id=$id"; 
... 
} 
+0

Как это будет работать с частью isset на update.php? –

Смежные вопросы