У меня было время пересмотреть этот ответ после обсуждения с @DerrickCoetzee в комментариях. На самом деле ответ может быть единственным способом решить эту проблему на некоторых серверах. Я предложил предоставить универсальный доступ для записи в базу данных, что, по общему признанию, небезопасно. Я нашел причину, по которой это единственное решение, которое я мог найти, заключается в том, что мой сервер отключил доступ на запись для php. php неспособен создавать новые файлы, и я не могу изменить владельца базы данных на apache или «nobody» без root-доступа, что делает невозможным лучшее решение.
По сути, мой сервер заблокировал php так, что он может писать только если каждый может писать. На мой взгляд, это плохая настройка сервера, которая привела к этой угрозе безопасности, и, как предполагает @Derrick, sqlite db, вероятно, следует использовать только для частного использования или только для доступа к серверу. Некоторые системы не настроены так, чтобы использовать это безопасно . Если вы обнаружите, что у php нет прав на запись, и у вас нет доступа с правами root к компьютеру, вам следует обратиться к системному администратору или переключиться на MySQL, если он доступен.
При этом я считаю следующее решение очень удобным для быстрых решений для создания прототипов, когда БД не чувствительна или будет известна только небольшой избранной группе людей.
Мой предыдущий ответ:
У меня была точно такая же проблема сегодня! Я довольно новичок в php и sqlite, но пыхтел. Внезапно я столкнулся с этим огромным препятствием (без прогресса в течение дня) из-за отсутствия вставки в мою базу данных sqlite, как описано на плакате с вопросом. Отличительным фактором здесь является то, что нет сообщения об ошибке или исключения, только возвращение false, если вы помещаете инструкцию execute в предложение if.
Итак, я наконец-то смог найти способ заставить вставку работать, но я не уверен на 100%, безопасно это или нет. Буду признателен за любые комментарии, если вы думаете, что есть лучший способ.
Основная проблема заключается в том, что вы пытаетесь позволить своим пользователям писать в файл в вашей файловой системе. Однако по умолчанию папки и документы имеют доступ только для чтения для посторонних. Поэтому вам нужно предоставить доступ к записи для вашей базы данных (user.db) и ее папки (./db).
Итак, вам нужно перейти в каталог и набрать:
chmod 777 ./db
chmod 766 ./db/user.db
Это решило эту проблему для меня, поэтому я надеюсь, что это тоже поможет вам. Я не знаю, есть ли лучший способ или нет, но это кажется довольно логичным.