@GlamourM

Как изменить (дополнить) первый элемент массива при записи его в базу? (PHP+MySQL)

Здравствуйте!
У меня есть textarea, в нее записывается текст. Построчно.
Данные отправляются на сервер, обрабатываются в массив, таким образом, что каждая строчка является элементом массива. А затем это все записывается в базу.
Все работает хорошо, но есть вопрос.
Можно ли как-нибудь изменить данные для первой строки из массива?
Т.е. в таблице есть поля:
ID
text
first

Нужно, чтобы если это первая строка из массива, то в FIRST записывается едичка, а для всех остальных строк - 0, или ничего.
Большое спасибо за варианты.
С уважением.

if(isset($_POST['text']) && $_POST['text'] != ''){
       $text = strip_tags(mysql_real_escape_string($_POST['text'])) ;
       $nl_char='\n';
       $arr=explode($nl_char, $text);
       foreach ($arr AS $item){
       //и вот тут вот, какое-то условие. Если это первая строка массива, то
              mysql_query("INSERT INTO `item` (text, first) VALUES ('$item', 1)");
       //а если последующие, то
              mysql_query("INSERT INTO `item` (text, first) VALUES ('$item', 0)");
       }
}
  • Вопрос задан
  • 3521 просмотр
Решения вопроса 1
$i = 0;
foreach ($arr AS $item){
      if ( !$i ) {
              mysql_query("INSERT INTO `item` (text, first) VALUES ('$item', 1)");
}       else {
              mysql_query("INSERT INTO `item` (text, first) VALUES ('$item', 0)");
       }
   $i++;
}

а вообще вы собираетесь делать 1000 запросов для текста из 1000 строк? надо собирать один запрос
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
egor_nullptr
@egor_nullptr
foreach ($arr as $index => $item) {
   $is_first = $index == 0;
}
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Откажитесь от использования mysql, он в статусе depricated. Вместо этого используйте mysqli или PDO.
Вместо формирования запросов соединением строк используйте параметризованные запросы.
if (isset($_POST['text']) && $_POST['text'] != '') {
    $stmt = $mysqli->prepare("INSERT INTO `item` (`text`, `first`) VALUES (?, ?)");
    $stmt->bind_param("si", $item, $first);
    $arr=explode('\n', $text);
    $first = 1;
    foreach ($arr AS $item) {
        $stmt->execute();
        $first = 0;
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы