А какая проблема просто вставить как есть, без всех этих изысков? null на языке базы данных и означает, что поле не заполнено.
или под "не заполнено" имеется в виду что width не равно null, а просто отсутствует в data?
iljaGolubev, я не понимаю, извините.
Если в sql ошибка, то проблема не в коде, а в sql.
С какой стати этот условный новичОк будет говорить, что ошибка в коде? Почему ответ неполный?
Не надо "собирать" данные. они у вас УЖЕ готовы.
В нормальном программировании, а не говнокодинге, вставка одной строки всегда идет МАССИВОМ, как показано у меня в ответе.
Ну так этот массив у вас уже есть, его не надо собирать. foreach вам при каждом проходе выдает уже готовую строчку для вставки
Это тест на умение писать ответы
В данном случае ценность ответа для автора вопроса нулевая.
Вы написали ответ не для него, а чтобы показать, смотрите, я тоже умею! Но такие ответы писать не надо
iljaGolubev, медленнее, но не принципиально. Именно потому что в транзакции. Но зато в 100 раз нагляднее, что для новичка самое важное.
А try catch - зачем?
Мне кажется, вы не совсем понимаете назначение этой конструкции.
Попробуйте сформулировать, для чего, по вашему, нужно использовать try catch?
Правильно, потому что с самого начала вместо всех этих телодвижений надо было в вопросе привести структуру массива.
Все ответы исходят из того, что это простой список, где через запятую идут строки БД:
[{snippet: 1, amp:, date:1, anchor:1, link: 1}, {snippet: 2, amp:2, date:2, anchor:2, link: 2},...]
но у него может быть и любая другая структура.
И код зависит от неё
ладно-ладно, строка-то бог с ней
А параметры-то, параметры - вы вот так и предлагаете передавать?
Посчитать количество элементов в массиве, и садиться писать вот это вот $data[0]['snippet'], $data[1]['snippet'], $data[999]['snippet']?
отличный ответ, "строку запроса надо сформировать"
идеально подходит для человека, который массивы видит первый раз в жизни :)
Ну и $params =[$data[0]['snippet']... выглядит троллингом.
или погодите. Вы серьезно предлагаете все это писать руками?
Вопрос дурацкий, я бы удалил.
РНР не используется для "хранения файлов".
Если вам личные файлы хранить, то РНР тут не при чем.
Если у вас какой-то сайт, на котором должны лежать файлы, то РНР опять не при чем.
При этом сначала надо определиться с объемом.
Если для сайта, то должно хватить стандартного размера, выделяемого под хостинг
Если для каких-то других целей, то их надо обозначить, равно как и предполагаемые объемы.
неплохо для начинающего, но несколько замечаний.
вместо PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' надо писать charset=utf8mb4 выше в DSN
вместо этого в $options обязательно должно быть PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
вместо длинной бороды с bindParam проще написать $stmt->execute($values);
сам цикл желательно заключить в транзакцию, для скорости и консистентности.
Вы путаете utf8 с utf16
никаких 3 или 4 байтов на символ там и рядом не лежало.