更新整列而不是行

时间:2014-02-04 14:50:04

标签: php mysql pdo

好的是有可能更新列而不是行吗?

f.e之类的:

$laninpstmt = $db->prepare ("UPDATE table SET column_name WHERE id = :allids");

$laninpstmt->bindParam(':allids', $_POST['input0']);

$laninpstmt->bindParam(':allids', $_POST['input1']);

$laninpstmt->bindParam(':allids', $_POST['input2']);

$laninpstmt->bindParam(':allids', $_POST['input3']);

$laninpstmt->bindParam(':allids', $_POST['input3']);

如果我解释代码就像: 更新表中一列的所有行(allid)

3 个答案:

答案 0 :(得分:2)

在没有where子句的情况下运行查询将更新所有行,如果更新单个字段,则与更新列相同

UPDATE `test` SET `field_5` = 7

将更新表test并将列field_5中的所有值设置为7

答案 1 :(得分:0)

您忘了为column_name指定值

   UPDATE table SET column_name = 'Some_value here' WHERE id = :allids

我猜你想要这样做

$laninpstmt = $db->prepare ("UPDATE table SET column_name = Concat(:allids1 , :allids2, :allids3, :allids4) WHERE id = :allids");
$laninpstmt->bindParam(':allids', $_POST['input0']);

$laninpstmt->bindParam(':allids1', $_POST['input1']);

$laninpstmt->bindParam(':allids2', $_POST['input2']);

$laninpstmt->bindParam(':allids3', $_POST['input3']);

$laninpstmt->bindParam(':allids4', $_POST['input4']);

答案 2 :(得分:0)

您可以使用IN

显然,您需要自己进行查询,请参阅https://stackoverflow.com/a/920523/2575355

$inputs = array($_POST['input0'], $_POST['input1'], $_POST['input2']);
$allids = implode(', ', $inputs)

$laninpstmt = $db->prepare ("UPDATE table SET column_name WHERE id IN ($allids)");