使用PHP&创建通用更新功能MySQL的

时间:2014-04-11 17:42:26

标签: php mysql pdo

我正在尝试使用PHP和&amp ;;创建一个可以与任何数据库一起使用的Update函数。 MySQL“PDO”连接“但它不起作用..这是代码

<?php
require_once "PDO-Connection.php";
function update ($table, $data, $id, $pdo)
{
    foreach($data as $column => $value)
    {
    $sql = "UPDATE {$table} SET ({$column}) VALUE (:{$column}) 
    WHERE (ID) = (:{$id});
    $stmt = $pdo->prepare($sql);
    $stmt->execute(array(':'.$column => $value));
    }
}
?>

调用此函数

update("accounts", array("fname" => "ahmed90"), 1, $pdo);

我有(帐户)表&amp; (fname,ID)字段

先谢谢

3 个答案:

答案 0 :(得分:0)

您在UPDATE中编写的SQL代码并不正确。它应该是:

foreach($data as $column => $value)
    {
    $stmt = $pdo->prepare(" update $table set $column = ? where $id = ? ");
    $stmt->execute(array($column, $id);
    }

作为旁注,我认为你真的不需要创建function来更新数据库表行。您将来执行的每次更新都可能有一组preconditions,或者可能需要additional computation,这意味着您无法在每种情况下使用update功能。此外,如果要更新多个列,$data数组将有多个条目,foreach循环也会运行多次。这意味着在同一行上多次执行SQL更新,这可能意味着性能下降。

答案 1 :(得分:0)

您可以创建更新:

    <?php
include 'connection.php';
function dbupdate($table, $data, $id)
{
    global $link;
    $setColumn= array();


    foreach ($data as $key => $value)
    {
        $setColumn[] = "{$key} = '{$value}'";

    }

   $sql = "UPDATE {$table} SET ".implode(', ', $setColumn)." WHERE ID = '$id'";
    mysqli_query($link,$sql);

}
?>

答案 2 :(得分:-2)

此功能正常:

<?php
require_once "PDO-Connection.php";

function update ($table, $data, $id, $pdo)
{
    $setPart = array();
    $bindings = array();

    foreach ($data as $key => $value)
    {
        $setPart[] = "{$key} = :{$key}";
        $bindings[":{$key}"] = $value;
    }

    $bindings[":id"] = $id;

    $sql = "UPDATE {$table} SET ".implode(', ', $setPart)." WHERE ID = :id";
    $stmt = $pdo->prepare($sql);
    $stmt->execute($bindings);
}
?>

查看'PHP Sandbox'