【发布时间】:2015-02-26 00:21:11
【问题描述】:
我是 PDO 的新手,在更新数据库中的数组值时遇到问题。除了更新数组中的多个值之外,一切正常。
带有 PHP 代码的 HTML:
<?php
$next = 0;
echo '<ul>';
$sql = "SELECT * FROM customers LEFT JOIN products ON customers.product_code = products.product_code RIGHT JOIN transactions ON customers.transcode = transactions.transcode WHERE transactions.id = '$id'";
foreach ($pdo->query($sql) as $row) {
echo '<li>'.$row['product_name'] .' x <input name="p_qty['.$next++.']" type="number" value="'. $row['p_quantity'] .'"></li>';
}
echo '</ul>';
?>
输出:
- MVP 令人难以置信的散装获得者(8 磅)x 2
- MVP 令人难以置信的批量获得者 (16 磅)x 2
- Elite Labs 100% Isoblend(4 磅)x 2
每当我尝试更改第三个结果的数量时,第一和第二个数量也随之而来。
这是 PDO 代码:
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE transactions JOIN customers ON transactions.transcode = customers.transcode SET transactions.transcode = ?, date = ?, customers.custname = ?, payment = ?, status = ?, customers.p_quantity = ? WHERE transactions.id = ?";
$q = $pdo->prepare($sql);
foreach($_POST['p_qty'] as $qty){
$q->execute(array($transcode, $date, $custname, $payment, $status, $qty, $id));
}
Database::disconnect();
header("Location: index.php");
【问题讨论】:
-
ORDER BY somefield LIMIT 1,或者如果您不知道如何订购LIMIT 2, 1并希望UPDATE将按照与SELECT相同的顺序处理记录