Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 10

Не добавляются записи в таблицу SQlite3

29.01.2013, 03:04. Показов 2784. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Пытаюсь освоить php, написал класс который создает db и таблицу sqlite3, принимает из формы данные и заносит их в таблицу. Файл создается, таблица создается, а данные в таблицу не добавляются.
Подскажите пожалуйста в чем ошибка?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
 
class GbookDB extends SQLite3 {
    const DB_NAME = "gbook.db";
    
    function __construct(){
        if(!file_exists(self::DB_NAME)){
            $this->open(self::DB_NAME);
                $sql =("CREATE TABLE msgs(
                        id INTEGER PRIMARY KEY,
                        name TEXT,
                        email TEXT,
                        msg TEXT,
                        datetime INTEGER,
                        ip TEXT)");
                $this->exec($sql);
            }else{
                $this->open(self::DB_NAME);
            }
    }
    
    function savePost($name, $email, $msg){
        $ip = $_SERVER["REMOTE_ADDR"];
        $datetime = time();
        $sql =("INSERT INTO  msgs(name,
                                 email,
                                 msg')
                          VALUES('$name',
                                 '$email',
                                 '$msg',
                                 '$ip',
                                 $datetime)");
        $this->exec($sql);
        
}
 
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2013, 03:04
Ответы с готовыми решениями:

Не добавляются записи в таблицу
Не могу понять почему скрипт регистрации не добавляет записи в мускул!Ошибок не пишет!Я думаю, что в моем корявом коде, косяк кроется в...

Sqlite3 не добавляются данные в таблицу
Программа выполняется, но в переменной results ничего - . Не могу найти ошибку. hash1 = 'a' con = sqlite3.connect('bd.db') cur =...

Не добавляются записи в таблицу БД Access
Помогите решить проблему, при отладке не добавляются записи в таблицу, а вот изменять можно Imports System.Windows.Forms Public...

6
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
29.01.2013, 05:15
Цитата Сообщение от sib Посмотреть сообщение
PHP
1
$sql =("INSERT INTO msgs(name, email, msg') VALUES('$name', '$email', '$msg', '$ip', $datetime)");
а как вы в три поля хотите вставить 5 значений?
1
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 10
29.01.2013, 10:16  [ТС]
Ошибочка вышла, вот так будет, но данные все равно не добавляются ?!
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
 
class GbookDB extends SQLite3 {
    const DB_NAME = "gbook.db";
    
    function __construct(){
        if(!file_exists(self::DB_NAME)){
            $this->open(self::DB_NAME);
                $sql =("CREATE TABLE msgs(
                        id INTEGER PRIMARY KEY,
                        name TEXT,
                        email TEXT,
                        msg TEXT,
                        datetime INTEGER,
                        ip TEXT)");
                $this->exec($sql);
            }else{
                $this->open(self::DB_NAME);
            }
    }
    
    function savePost($name, $email, $msg){
        $ip = $_SERVER["REMOTE_ADDR"];
        $datetime = time();
        $sql =("INSERT INTO  msgs(name,
                                 email,
                                 msg',
                                 datetime,
                                 ip)
                          VALUES('$name',
                                 '$email',
                                 '$msg',
                                 $datetime,
                                 '$ip')");
        $this->exec($sql);
        
}
 
?>
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
29.01.2013, 12:27
у вас там апостроф в msg

Добавлено через 9 минут
вот я тут немного попробовал как работает, может пригодится, чесно говоря не знал о таком классе, думал, что можно только через PDO с SQLite работать
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
error_reporting(-1);
class GbookDB extends SQLite3 {
    const DB_NAME = "gbook.db";
    
    function __construct()
    {
        try{
            parent::__construct(self::DB_NAME, SQLITE3_OPEN_READWRITE);       
        } catch (Exception $e) {
            $this->createDB();
        }
    }
    
    function createDB()
    {
        parent::__construct(self::DB_NAME);
            $sql = "CREATE TABLE msgs(
                        id INTEGER PRIMARY KEY,
                        name TEXT,
                        email TEXT,
                        msg TEXT,
                        datetime INTEGER,
                        ip TEXT)";
            $this->exec($sql);
    }
    
    function savePost($name, $email, $msg)
    {
        $sql ="INSERT INTO  msgs(name, email, msg, ip, datetime)
                    VALUES(:name, :email, :msg, :ip, :date)";
        $stmt = $this->prepare($sql);
        $stmt->bindValue(':name', $name, SQLITE3_TEXT);
        $stmt->bindValue(':email', $email, SQLITE3_BLOB);
        $stmt->bindValue(':msg', $msg, SQLITE3_TEXT);
        $stmt->bindValue(':ip', $_SERVER["REMOTE_ADDR"], SQLITE3_TEXT);
        $stmt->bindValue(':date', time(), SQLITE3_INTEGER);
        $stmt->execute();
        $stmt->close();
    }
    function selectAll()
    {
        $sql = "SELECT * FROM msgs";
        $result = $this->query($sql);
        while($row = $result->fetchArray(SQLITE3_NUM)){
            
            //echo $row[2];
            var_dump($row);
            echo '<br />';
        }
        $result->finalize();
    }
    
    function __destruct()
    {
        @$this->close();
    }
}
$o = new GbookDB();
 
$o->savePost('post','мыло','сообщение');
$o->selectAll();
1
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 10
29.01.2013, 12:42  [ТС]
Может быть сейчас будет смешно, я все понял кроме одного, что означают ( двоеточия перед значениями в методе
savePost()?
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
29.01.2013, 12:53
ну если вставлять данные напрямую, как сделано у вас, то это прямая дорога к sql иньекции, а так sql выражение сначала подготавливается, вместо переменных подставляются так называемые именные плейсхолдеры(названия с двоеточиями) или могут вместо них быть просто знаки вопросов, и данные в базу идут уже отдельно от выражения, соответственно никакой sql иньекции быть не может.
Почитайте в гугле про плейсхолдеры, для расширения PDO эта тема расписана намного подробнее, да и вообще лучше использовать PDO вместо SQLITE3, там и возможностей побольше, и можно работать с одним кодом в разничных базах данных, изменив лишь способ подключения.
1
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 10
29.01.2013, 12:57  [ТС]
Огромнейшее спасибо реально все понятно и доступно!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2013, 12:57
Помогаю со студенческими работами здесь

В таблицу MySql не добавляются записи.
Не прошло и 2 дней, как я вернулся с новым вопросом) Написал запрос на добавление записи в таблицу, вроде бы всё как надо, но после...

В таблицу MySql не добавляются записи
Доброго времени суток. Та же проблема что и в теме https://www.cyberforum.ru/php-database/thread270327.html, не добавляются данные в...

Не добавляются данные в таблицу
БД: DataBase Мне нужно чтоб производил поиск по таблицы из ComboBox, если данные есть, то существующие удалялись, а новые добавлялись....

Не добавляются данные в таблицу
Всем доброго времени суток. В локальной базе данных я создал таблицу изменений для синхронизации после с сервером. В ней всего две колонки...

Не добавляются данные в таблицу
Толи лыжи не едут, то ли я не туда смотрю... Всем привет! С утра ищу подвох и не могу найти:wall:. Может кто подскажет? &lt;!DOCTYPE...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru