PHP使用整型字段分解数组

PHP使用整型字段分解数组,php,mysql,Php,Mysql,我搜索了一下,但在这里什么地方都找不到答案。我有一个multiselect框,它将接受每个选择,并将其分解为单独的数据条目,然后放入MySQL数据库。这是密码 $arr = explode(",",$values["account_id"]); $j = count($arr); for($i = 0; $i < $j ; $i++) { $strInsert = "update accounts_data set balance=balance+".$values[

我搜索了一下,但在这里什么地方都找不到答案。我有一个multiselect框,它将接受每个选择,并将其分解为单独的数据条目,然后放入MySQL数据库。这是密码

   $arr = explode(",",$values["account_id"]);
   $j = count($arr);
   for($i = 0; $i < $j ; $i++)
{
  $strInsert = "update accounts_data set balance=balance+".$values["debit"]." where id='".$arr[$i]."'";
  DB::Query($strInsert);
}
$arr=explode(“,”,$values[“account_id”]);
$j=计数($arr);
对于($i=0;$i<$j;$i++)
{
$strInsert=“更新账户\数据集余额=余额+”$values[“借方”]”。其中id=“$arr[$i]”;
DB::查询($strInsert);
}

字段account_id是一个整数字段,但是如果我选择了两个以上的项目,代码就会中断。如果account_id设置为VARCHAR,我可以选择所有内容,它的工作方式与我使用新借方更新每个帐户余额所需的方式相同。我不太清楚为什么它适用于VARCHAR而不是INT,我也不太清楚如何在经过一个月的反复试验后使它工作。我想知道是否有人有比我更聪明的想法

我不确定我是否理解您关于varchar和int的解释

下面是一种方法:

$values["account_id"] = "30,56,78";
$values["debit"] = 100;

foreach(explode(",", $values["account_id"]) as $account)   
{
    $strInsert = "update accounts_data set balance=balance+" . $values["debit"] ." where id=" . $account;
    echo $strInsert . PHP_EOL;
    //   DB::Query($strInsert);
}

希望这能有所帮助。

在测试之前您是否尝试回显查询?输出是什么?
$values[“account\u id”]
到底包含什么内容?如果我回显查询,它就是空的。根本没有输出。$values[“account_id”]是来自multiselect框的数据,即账号。请给我们一个打破它的账号的$values[“account_id”]的真实示例,以及另一个有效的示例。如果知道mysql表StructurAturis也不是银行,那也会很有帮助。它在一个内部网络上用于客户端计费,一个根本没有连接到互联网的网络。同样的情况也会发生。如果我选择2个科目,它会显示以下内容:
updateaccounts\u data set balance=balance+100,其中id=24个update accounts\u data set balance=balance+100,其中id=25
如果我选择3个或更多科目,我会得到错误:“account\u id”列不能为空。您可以发布$values的确切值[“account\u id”]和您得到的确切错误吗,求你了?确切的值只是数字,比如上面我贴的id=24或id=25。如果我选择2个帐户,它将正常工作。但是3个或更多,它会删除从multiselect框中选择的所有帐户id。我得到一个错误,帐户id不能为空,因为它没有选择任何数字。帐户数据上的“ID”字段是一个INT类型的列。如果我将列类型更改为VARCHAR,它将起作用。很抱歉坚持,但您的变量$values[“account_id”]可能会解决这个问题;是否有额外的空行/值?最后一个解释验证了这一点,因为如果您的列是varchar…(它不会更新任何内容),那么最后一次插入(如果multiselect中有额外的空值/行)将通过,但如果是整数,它将中断。当您有3个或更多值时,您是否尝试过打印所有sql语句?我将其设置为“插入”而不是“更新”只是为了尝试,如果选择了3个或更多值,则打印的sql不会显示任何内容。如果我只选择2个帐户,SQL将打印以下内容:插入帐户\数据(id)值('25')插入帐户\数据(id)值('26')。我不确定这是否有什么不同,但我正在使用PHPRunner来制作我需要的脚本。但我是作为免费编码而不是软件本身来做的。因此,account_id的值来自PHPRunners字段。