2015-05-11 2 views
0

поэтому у меня есть таблица с такими полями, я хочу иметь возможность редактировать каждое имя пользователя/адрес электронной почты и т. Д., Если этот флажок установлен.Получение текста простого массива при обновлении записи mysql

echo '<td><input type=checkbox name=checkbox[] value='. $row['Id'] .'  ></td>'; 
 
echo '<td><input type=text  name=username[] value='. $row['username'] .' ></td>'; 
 
echo '<td><input type=text  name=email[]  value='. $row['email'] .' ></td>'; 
 
echo '<td><input type=text  name=adress[] value='. $row['adress'] .' ></td>';

и это мой сценарий, я получаю массив простой текст в качестве результата от каждого входа, кстати Im, используя запрос для электронной почты только для проверки первого

if(isset($_POST['edit'])) 
 
{ 
 
    if(isset($_POST['checkbox'])) { 
 
     $id_array = $_POST['checkbox']; 
 
     $id_count = count($_POST['checkbox']); 
 
     for($i=0; $i < $id_count; $i++) { 
 
      $id = $id_array[$i]; 
 
      $query = ("UPDATE members SET email = '". $_POST['email'] ."' WHERE ID = '". $id ."'"); \t \t 
 
      $result = $conn->query($query); 
 
      if($result) { 
 
       echo "ok"; 
 
      } 
 
      else { 
 
       echo "<br><br>Error: " . $conn->error; 
 
      } 
 
     } 
 
    } 
 
}

+1

Ваш qiestion неясен и отформатируйте код так, что он будет lookable. –

ответ

2

Прежде всего, вы уязвимы для sql injection attacks. Наслаждайтесь наличием вашего сервера pwn3d.

Во-вторых, вы заполняете свой массив POST непосредственно в запросе, что неверно. Так как вы используете хак [] именования в полях формы, $_POST['email'] собирается быть ARRAY значений из вашей формы, и вам нужно что-то больше похож

.... VALUES ('$_POST[email][$i]', ...) 
          ^^^^ 

(обратите внимание на дополнительный индекс массива), чтобы получить доступ к отдельные значения в этом подматрице.

Помните, что для PHP, с использованием массива в строковом контексте дает буквальное слово Array, а не содержимое массива:

$foo = array(1,2,3); 
echo "$foo"; // outputs 'Array' 
echo "$foo[1]"; // outputs '2' 
+1

привет Marc B спасибо за ответ, это не происходит в Интернете. Я просто изучаю PHP, но его хорошо понимать проблемы безопасности. – skunkhaze

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