0

我有一个表,其中包含一个名为 ssn 的 int 列和一个名为 male 的列。

现在我想根据 ssn 列中的倒数第二个数字是奇数还是偶数来用 1 或 0 更新男性列。

$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 列包含什么。

干杯

4

1 回答 1

0

您的查询中没有 WHERE 子句,因此该 UPDATE 语句的每次执行都会更新表中的所有行。您的 UPDATE 应该是真正的形式 WHERE unique_id = id_value

但是,您不必为所有的获取和所有单独的更新而烦恼,您可以用一个语句一气呵成地更有效地完成相同的事情:

UPDATE loandb_enkatsvardb SET male = SUBSTR(ssn,-2,1) MOD 2
于 2013-08-13T23:29:35.497 回答