Не удается обновить значение массива в MySQL - PullRequest
0 голосов
/ 13 сентября 2018

Я не уверен, в чем проблема с моим запросом, потому что я не могу обновить свою базу данных с последним значением, но я могу (print_r) значение.

$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):

Таблица обновления

когда я повторяю $ serial, я получаю это: -

echo $ serial

когда я повторяю $ a, я получаю это: - echo $ a

и моя база данных выглядит так: - Таблица базы данных

Очень нужен кто-то, чтобы помочь мне, потому что я в настоящее время не могу решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

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-инъекций , ноэто другая тема.Я настоятельно советую вам дезинфицировать входные данные пользователя.Никогда не доверяй пользователю.

0 голосов
/ 13 сентября 2018
$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.

...