У меня более 500 пользователей: pass, и я хочу добавить все данные с текстовым полем.

Пример ;

Пользователь: передать пользователь: передать пользователь: пройти

Я использую следующие коды для индивидуального добавления пользователей;

$username = $_POST['username'];
$password = $_POST['password'];
$query = $db->prepare("INSERT INTO users SET user = ?, pass = ?");
$insert = $query->execute(array($username, $password));

Как я могу заставить это добавить несколько данных user = username : pass = password

Заранее спасибо.

0
bilalbalci 4 Май 2021 в 22:41

1 ответ

Лучший ответ

Вы можете использовать explode для разделения вашей строки разделителем, например, если у вас есть такая строка

john:1234 mario:465789

После explode будет так

$data = explode(' ', $_POST['textarea']);
print_r($data);

/*
[
 'john:1234',
 'mario:465789'
]
*/

После этого вы можете explode это еще раз из ":", чтобы вы могли попробовать что-то вроде этого

$data = $_POST['textarea'];
$data = explode(' ', $data);

foreach($data as $record){
   $user = explode(':', $record);
   
   $query = $db->prepare("INSERT INTO users SET user = ?, pass = ?");
   $insert = $query->execute(array($user[0], sha1($user[1])));
}

еще одна вещь, так опасно сохранять password как простой текст, поэтому я просто добавляю sha1, чтобы добавить некоторый уровень безопасности для хеширования пароля

Другое решение

Вы также можете использовать regex, чтобы быть более эффективным, как это

$data = $_POST['textarea'];

preg_match_all('/(\S+:\S+)/m', $data, $matches);

foreach($matches as $record){
   $user = explode(':', $record);

   $query = $db->prepare("INSERT INTO users SET user = ?, pass = ?");
   $insert = $query->execute(array($user[0], sha1($user[1])));
}
0
Joseph 4 Май 2021 в 20:32