Это не может работать, если обе переменные содержат массивы.Вам необходимо обновить элементы по одному (или использовать неуклюжий оператор MySql CASE, который я не буду здесь объяснять):
foreach ($userrole as $key => $role) {
$query = "UPDATE members SET userrole ='$role'
WHERE member_id = '$member_id[$key]'";
// perform query ...
}
Или, если только $ member_id является массивом:
$query = "UPDATE members SET userrole ='$userrole'
WHERE member_id IN ('" . implode(',', $member_id) . "')";
// perform query ...
Вам следует дополнительно переименовать ваши переменные, чтобы отразить, что они являются массивами.Просто используйте множественное число:
$userrole => $userroles
$member_id => $member_ids
. Более подробно: эти значения взяты из формы HTML?Если да, , вам следует санировать их, используя mysql_escape_string()
.Это можно сделать для нескольких значений одновременно, используя array_map()
:
$userroles = array_map('mysql_escape_string', $userroles);
$member_ids = array_map('mysql_escape_string', $member_ids);