Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите разобраться с TRANSACTIONS в SQLute
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Помогите разобраться с TRANSACTIONS в SQLute

Страниц (1): [1]
 

1. kappa - 05 Декабря, 2011 - 13:32:40 - перейти к сообщению
Извините, ошибся в названии темы (SQLite).
Впервые пишу такой запрос. Посмотрите, что не так?

PHP:
скопировать код в буфер обмена
  1.    function saveTov($name, $desc, $main_img, $images, $cat, $price, $visited) {
  2.        $this->_db->query('BEGIN;');
  3.        $sql = "
  4.       INSERT INTO tovar (cat, name, price, title_img, images, descriptions, visited)
  5.       VALUES ($cat, '$name', $price, '$main_img', '$images', '$desc', $visited);
  6.       INSERT INTO goods_sizes (good_id, size_id) VALUES (1, 2);
  7.       ";
  8.        $this->_db->query('COMMIT;');
  9.        $res = $this->_db->query($sql);
  10.        return $res;
  11.        
  12.    }

Вставляет только первый INSERT.
2. EuGen - 05 Декабря, 2011 - 13:41:18 - перейти к сообщению
BEGIN TRANSACTION

?
3. kappa - 05 Декабря, 2011 - 13:59:32 - перейти к сообщению
EuGen
Пробую так,

PHP:
скопировать код в буфер обмена
  1. $this->_db->query('BEGIN TRANSACTION;');


но в goods_sizes почему-то не хочет заносить данные (int)
4. EuGen - 05 Декабря, 2011 - 14:18:27 - перейти к сообщению
sqlite_error_string(sqlite_last_error())
что сообщает?
5. kappa - 05 Декабря, 2011 - 14:37:23 - перейти к сообщению
Вот дописал
PHP:
скопировать код в буфер обмена
  1. function saveTov($name, $desc, $main_img, $images, $cat, $price, $visited) {
  2.        $this->_db->query('BEGIN TRANSACTION;');
  3.           $sql = "
  4.              INSERT INTO tovar (cat, name, price, title_img, images, descriptions, visited)
  5.              VALUES ($cat, '$name', $price, '$main_img', '$images', '$desc', $visited);
  6.              INSERT INTO goods_sizes (good_id, size_id) VALUES (1, 2);
  7.      ";
  8.        $this->_db->query('COMMIT;');
  9.        $res = $this->_db->query($sql) or die (sqlite_error_string(sqlite_last_error()));
  10.      
  11.        return $res;
  12.        
  13.    }


Но sqlite_error_string(sqlite_last_error() ничего не сообщает, а данные в tovar заносятся,
а в goods_sizes нет.
6. EuGen - 05 Декабря, 2011 - 14:45:03 - перейти к сообщению
http://stackoverflow[dot]com/questio[dot][dot][dot]work-as-expected

И, возможно, использовать PDO
sqlite2 - это вообще простенькая СУБД. Не исследовал как там дело обстоит с транзакциями, так как обычно уже всегда используется sqlite3
7. kappa - 05 Декабря, 2011 - 15:15:07 - перейти к сообщению
EuGen
Спасибо, буду пробовать может что и получится.
Кстати в запросе через SQLite - adminner транзакция срабатывает.
8. kappa - 05 Декабря, 2011 - 17:48:43 - перейти к сообщению
И все таки допилил чего хотел, вот может кому поможет в дальнейшем
уже рабочий вариант.

PHP:
скопировать код в буфер обмена
  1. function saveTov($name, $desc, $main_img, $images, $cat, $price, $visited) {
  2.        $this->_db->query("BEGIN");
  3.        $res = $this->_db->queryExec("
  4.       INSERT INTO tovar (cat, name, price, title_img, images, descriptions, visited)
  5.       VALUES ($cat, '$name', $price, '$main_img', '$images', '$desc', $visited);
  6.       INSERT INTO goods_sizes (good_id, size_id) VALUES ('1', '2');    
  7.     ");
  8.        $this->_db->query("COMMIT");
  9.      
  10.        return $res;  
  11.    }

 

Powered by ExBB FM 1.0 RC1