是否有可能在PHP中使用MySQLi更新具有数组的表而不知道字段名称,有多少及其值.
我尝试过在密钥和值字段上插入问号的预备语句(?=?).我在想是否可以在更新查询中使用()VALUES()我可能有一个解决方案,但我猜不存在这样的事情.
看看我的剧本:
<?php
class UserHandler {
public function updateUserData($array, $id) {
global $mysqli;
$stmt = $mysqli->prepare("UPDATE users SET ?=? WHERE id = ?");
$stmt->bind_param('ssi', $array[0], $array[1], $id);
$stmt->execute();
return true;
}
}
$users = new UserHandler;
?>
Run Code Online (Sandbox Code Playgroud)
我希望用法如下:
<?php
$users->updateUserData(array(
'firstname' => 'Wanda',
'lastname' => 'Merritt',
'state' => 'IN'
'address' => '693 Pearcy Avenue',
'zipcode' => 46625,
), 45);
$users->updateUserData(array(
'firstname' => 'Stanley',
'lastname' => 'Lewis',
'password' => '123123'
), 159);
?>
Run Code Online (Sandbox Code Playgroud)
一个查询,带有预处理语句:
public function updateUserData($array, $id) {
global $mysqli;
$query = "UPDATE `users` SET ";
$parts = array();
foreach ($array as $key => $value) {
$parts[] = "`" . $key . "` = ?";
}
$query = $query . implode(",", $parts) . " WHERE id = ?";
$stmt = $mysqli->prepare($query);
foreach ($array as $key => $value) {
$stmt->bind_param('s', $value);
}
$stmt->bind_param('i', $id);
$stmt->execute();
return true;
}
Run Code Online (Sandbox Code Playgroud)
这确实假设所有值都是字符串.
| 归档时间: |
|
| 查看次数: |
19185 次 |
| 最近记录: |