Не удается обновить значение массива в MySQL

0

Я не уверен, в чем проблема с моим запросом, потому что я не могу обновить мою базу данных с последним значением, но могу (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

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

На самом деле нужно, чтобы кто-то помог мне, потому что я в настоящее время пуст с этой проблемой.

  • 0
    Пожалуйста, узнайте о подготовленных заявлениях. Ваш текущий запрос очень уязвим к уязвимости SQL-инъекций
  • 0
    @MadhurBhaiya TQ за ваши комментарии. Я узнаю об этом как можно скорее.
Теги:
arrays
foreach
sql-update
post

2 ответа

0
Лучший ответ

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
    Большой!! Спасибо, Спасибо, Спасибо! Я учу это у тебя. Большое спасибо, это работает! Хорошо, я тоже узнаю о SQL. :)
0
$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 loop, массив из одного элемента является единственным в $ m.

  • 0
    это работает для меня. Огромное спасибо. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню