2016-09-21 3 views
-2

У меня есть три массива, извлеченные из полей ввода (поля находятся в цикле while).Обновление столбцов таблицы с массивами, php

$act = $_POST["act"]; 
$apid = $_POST["relate"]; 
$reason = $_POST['reason']; 

массивы $ act, $ apid, $ reason содержат значения, подлежащие обновлению для каждого столбца. например:

$act=(1,2,3,4,5,6); 
$apid=(303,304,305,306,307,308); 
$reason=(delivery,contract,cargo,offloading,uploading,seal); 

на стороне базы данных, у меня есть таблица ActivityProduct с 3 колонками, а именно; APID, Actual, Reason. APID является основным ключом таблицы.

Я хотел бы обновить колонки Actual и Reason со значениями из массивов. Вот мой код (который не работает), для обновления:

$values=array('reas'=>$reason,'actu'=>$act,'ids'=>$apid); 
foreach ($values as $key) 
{ 
$update_row =mysql_query("UPDATE ActivityProduct SET Actual= '$key['actu']}',Reason='{$key['reas']}' WHERE APID='{$key['ids']}' ") 
} 

Вот ошибка я получаю:

Notice: Undefined index: actu in C:\xampp\htdocs\PD\validate\save-actual.php on line 65 

Notice: Undefined index: reas in C:\xampp\htdocs\PD\validate\save-actual.php on line 65 

Notice: Undefined index: ids in C:\xampp\htdocs\PD\validate\save-actual.php on line 65 

Любая идея, что я делаю неправильно? или как заставить его работать? ..... Я не так разбираюсь в массивах.

+2

Почему вы используете 'foreach'? У вас уже есть три значения, которые можно поместить в запрос, зачем их помещать в массив? –

+0

@u_mulder правильный, а также ваш ключ $ - это фактически ваше значение массива. – Indrajit

+0

@u_mulder может быть вполне возможно, что он показывает только пример, и он получает несколько-один. На самом деле не могу сказать, потому что непонятно, что сторона OP –

ответ

0
It should be like this,remove the for loop 

    $values=array('reas'=>$reason,'actu'=>$act,'ids'=>$apid); 

    $update_row =mysql_query("UPDATE ActivityProduct SET Actual= '".$values['actu']."',Reason='".$values['reas']."' WHERE APID='".$values['ids']."'"); 
+0

Опять же, отсутствует открывающая фигурная скобка из' Actual = $ key ['actu']} ' – RamRaider

+0

Пожалуйста, не используйте string для построения SQL-запросов, особенно если содержимое переменных поступает от пользователя ('$ _POST'). Это открывает вам до SQL-инъекций. – Jost

+0

@ RamRaider, обновил ответ – user3040610

0

Они переменные $ key не являются массивами, попробуйте распечатать их в цикле, и вы увидите. И проверьте documentation и примеры цикла foreach, чтобы быть знакомы с ним.

Вам не нужен этот цикл так или иначе, удалить петлю и попробовать этот

$update_row =mysql_query("UPDATE ActivityProduct SET Actual= {$values['actu']},Reason='{$values['reas']}' WHERE APID='{$values['ids']}' ") 

Если вы будете запускать этот Еогеасп обновлять будет выполняться 3 раза, потому что у вас есть 3 элементов в массиве.

+0

, используя ваш метод, я получаю сообщение об ошибке: запрос: Преобразование строки в строку – Kenn

+0

Опять же, Отсутствует открывающая фигурная скобка из 'Actual = $ values ​​['actu']}' – RamRaider

+0

Kenn, попробуйте напечатать (var_dump) ваши $ values ​​['actu'], а затем получить фактическое значение. – Paradiso

Смежные вопросы