在php中更新到数据库

时间:2013-11-27 22:53:10

标签: php mysql sql

我正在尝试使用代码来更新用户选择的一些数据。

正在发生的事情是它将该列中的所有内容更新为用户编辑它的值。

例如我有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;
}

?>

3 个答案:

答案 0 :(得分:2)

您的SQL UPDATE语句不正确。

WHERE members.member_id = members.member_id

上面的所有行总是要解析为true,进行调用

UPDATE members SET name='$id'

您应该设置名称,并在WHERE原因中添加成员ID(唯一标识)。

/** 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']);

答案 1 :(得分:0)

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

这相当于

UPDATE members SET name='$id'

因为where子句的所有行的计算结果为TRUE

答案 2 :(得分: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";
...
}