【问题标题】:Trying to insert records unless value is 0除非值为 0,否则尝试插入记录
【发布时间】:2012-01-31 14:32:27
【问题描述】:

我有以下代码将多条记录插入 MySQL:

foreach ($_POST AS $input => $value) {
    if (stristr($input, 'percent_owner_')) {
        $memberID = str_replace('percent_owner_', '', $input);
        $data['memberID'][] = $memberID;
        $data['percentOwner'][] = $value;
    }
}
$total = array_sum($data['percentOwner']);

if ($total !=100) {
    $error = "Must total 100%.";
    include('./errors/shares_error.php');

} else {

    $c = count($data['memberID']);
    for ($i=0;$i<$c;$i++) {

        $asset_ID = $_GET['asset_ID'];
        $query = "INSERT INTO shares (asset_ID, member_ID, percent_owner) 
             VALUES ('$asset_ID', '{$data['memberID'][$i]}', '{$data['percentOwner'][$i]}')";
        $add_shares = $db->exec($query);
    }
}

如果 'percent_owner' 值为 0,我不希望插入该记录。我试图在for 中添加一个if 语句,检查if '{$data['percentOwner'][$i]}' !== 0 但无法让它工作。任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 你试过if (intval($data['percentOwner'][$i]) !==0)吗?看起来您将获得一个字符串值,而这将使 !== 与整数 0 的严格比较失败。
  • 您尝试了哪些方法,但没有成功?
  • @Michael - 我刚刚尝试了你的建议,但是当 percent_owner = 0 时它仍在输入记录。有没有办法用 sql 语句做到这一点?
  • @Progger 请参阅下面的答案,了解应该如何正常工作。

标签: php mysql for-loop


【解决方案1】:

将值$data['percentOwner'][$i] 与 0 进行比较,然后将其转换为整数。从您生成上述值的方式来看,它似乎是一个字符串:

for ($i=0;$i<$c;$i++) {
  // Compare in if() against intval() of the value
  if (intval($data['percentOwner'][$i]) !== 0) {
    $asset_ID = $_GET['asset_ID'];
    $query = "INSERT INTO shares (asset_ID, member_ID, percent_owner) 
         VALUES ('$asset_ID', '{$data['memberID'][$i]}', '{$data['percentOwner'][$i]}')";
    $add_shares = $db->exec($query);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    相关资源
    最近更新 更多