PHP PDO更新多行[重复]
Posted
技术标签:
【中文标题】PHP PDO更新多行[重复]【英文标题】:PHP PDO Update multiple rows [duplicate] 【发布时间】:2019-05-26 15:05:33 【问题描述】:foreach($results as $row)
echo "
<input type='text' name='p_name' placeholder='" . $row['p_name'] . "'>
<input type='text' name='p_description' placeholder='" . $row['p_description'] . "'>
<input type='text' name='p_price' placeholder='" . $row['p_price'] . "'>
<input type='hidden' name='product_id'>
<input type='submit' name='update' value='update'>
";
echo "</form>";
if(isset($_POST['update']))
$values = [
'product_id' => $_POST['product_id'],
'p_name' => $_POST['p_name'],
];
$stmt = $pdo->prepare('UPDATE products SET p_name = :p_name WHERE
product_id = :product_id'
);
unset($_POST['update']);
foreach($values as $row)
$stmt->execute($row);
我正在尝试更新数据库中的多个字段,因此当我更新其中一个的产品名称时,我希望将其发送到数据库。但是,它不会提交带有 ID 的特定行,而是跳到最后一行并插入空白数据。如何选择要更新的特定产品名称?所以基本上更新数据库中的数据有很多行。
【问题讨论】:
你没有设置值隐藏product_id
输入
为什么
在</form>
之前?你没有向我们展示什么?
【参考方案1】:
您需要在输入中添加value
:
<input type='hidden' name='product_id' value="SOME VALUE">
该值可能是value='" . $row['product_id'] . "'
,但您需要从某处获取数据,例如从您要查询的数据库中获取数据以挂载表单。
【讨论】:
【参考方案2】:花点时间想想foreach($values)
会做什么。该结果将是传递给execute()
的有效数据吗?如果您的服务器上有正确的错误报告,您就会得到答案。
您只运行一个查询,所以您需要做的就是:
$values = [
':product_id' => $_POST['product_id'],
':p_name' => $_POST['p_name'],
];
$stmt = $pdo->prepare('UPDATE products SET p_name = :p_name WHERE product_id = :product_id');
$stmt->execute($values);
请注意,如果您使用命名参数,则需要在参数数组索引中包含冒号。
【讨论】:
我明白,但是如果我想更新多个产品名称,我会在一定程度上感到困惑 检查重复项以上是关于PHP PDO更新多行[重复]的主要内容,如果未能解决你的问题,请参考以下文章