无法更新mysql中的数组值

yzuktlbb  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(381)

我不确定我的查询有什么问题,因为我无法用最新的值更新数据库,但我可以(打印)该值。

$serial[$i]= $_POST['serial'][$i];
print_r($serial);
$a = array(1,2,3,4,5,6);
print_r( $a);

$i=0;
 $i=0;
foreach($serial as $s => $m){
      $sqlw = "update speciform set nam5 = '$m[$i]' where nn = '$a[$i]' AND 
      nam11= CURDATE()";
      mysql_query($sqlw) or die(mysql_error());
$i++;
    }

下面是我的更新表(html和php):
更新表
当我回显$序列号时this:-
回音$序列号
当我回音$a时,我得到this:-echo 一美元
我的数据库就像this:-database table
我真的需要有人来帮助我,因为我目前对这个问题一无所知。

j2datikz

j2datikz1#

$sqlw = "update speciform set nam5 = '$m[$i]' where nn = '$a[$i]' AND 
      nam11= CURDATE()";

更改此查询

$sqlw = "update speciform set nam5 = '$m' where nn = '$a[$i]' AND 
  nam11= CURDATE()";

因为正如您所采用的foreach循环,所以单个元素的数组是它们唯一的单位$m。

tmb3ates

tmb3ates2#

foreach($serial as $s => $m) { ... } 将在阵列中循环 $serial 如你所料。
如果你写:

foreach($serial as $s => $m)
{
    echo $m;
}

您将注意到,在每个迭代中,都会显示test1 test2 test3等等。
$m 是一根弦, $m[0] 是第一个字符。因此, $m[$i] 将在第一次迭代时显示第一个字符,在第二次迭代时显示第二个字符,依此类推。。。

$sqlw = "UPDATE speciform SET nam5 = '" . $m . "' WHERE nn = '" . $a[$i] . "' AND nam11= CURDATE()";

此查询易受sql注入攻击,但这是另一个主题。我强烈建议您清理用户输入。永远不要信任用户。

相关问题