我正在尝试使用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)字段
先谢谢
答案 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);
}
?>