我有一个带有名为ssn的int列和一个名为male的列的表。
现在我想用1或0来更新公列,这取决于第二个最后一个数字是奇数还是在ssn列中。
$sql = "SELECT * FROM db";
$result = $DBH->prepare($sql);
$result->execute();
foreach($result as $row) {
$male = $row['ssn'];
$male = substr($male, -2, 1);
if ( $male & 1 ) {
$gender = 1;//odd
}else
{
$gender = 0;};
$results= $DBH->prepare("UPDATE loandb_enkatsvardb SET male = $gender ")or die(mysql_error());
$results->execute();
加载很长时间后收到的错误是“内部服务器错误”。
我还尝试了“在重复时插入忽略”,它只在男性列中保存“1”,而不管ssn列包含什么。
干杯
答案 0 :(得分:0)
查询中没有WHERE子句,因此每次执行该UPDATE语句都将更新表中的所有行。您的更新应该是WHERE unique_id = id_value
形式。
但是,不要费心去取得所有的提取和所有个人更新,你可以通过一个声明一举更有效地完成同样的工作:
UPDATE loandb_enkatsvardb SET male = SUBSTR(ssn,-2,1) MOD 2