MySQL写入前的PHP数学验证


PHP math validation prior to MySQL write

我有一个PHP表单张贴任意数量的记录以下:

'asset_ID', 'percent_owner_<?=$members['member_ID']?>'

接收post的PHP页面使用以下命令分离percent_owner和member_ID:

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

脚本的下一部分使用以下命令将任意数量的记录输入MySQL:

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

所有这些都很好。我现在遇到的麻烦是在上面的MySQL插入之前,我想验证所有的百分比总计达到100%。例如,如果有3个成员,分别为25%、25%和25%,我希望生成一条错误消息,而不执行插入操作。现在,你必须手动输入百分比,然后自己把它们加到100。数据库将接受小于或大于100%,这会破坏数学。

我在插入之前使用了以下命令,但没有效果:

foreach ($data AS $share => $value) {
    $total = array_sum($value);
    }
    include('./view/temp.php');

我是一个PHP新手,所以请原谅我的无知。

谢谢!

我认为以下流程可以满足您的需求。

foreach ($_POST AS $input => $value) {
    if (stristr($input, 'percent_owner_')) {
    $memberID = str_replace('percent_owner_', '', $input);
    $data['memberID'][] = $memberID;
    $data['percentOwner'][] = $value;
      }
     }
if(array_sum($data['percentOwner'] != 100)){
//generate Error
}
$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);
    }
foreach ($data AS $share => $value) {
    if (array_sum($value) == 100) {
       // insert record
    }
    else {
       echo 'You borked it.'
    }
}