TheDarkestRed TheDarkestRed

Местные жители используют синие кристаллы для создания защитных полей вокруг своих домов 🎮🏠💎

...
Hisus Hisus

А ничего что количество аргументов в делегатах разное и оверрайднуть нельзя из-за этого?

TheDarkestRed TheDarkestRed

Механика парирования 🎮 🤺

...
ruggaraxe ruggaraxe

Mr_Fog, Спасибо) осенью планируем выпустить новую демку)

Mr_Fog Mr_Fog

Игра просто супер!!! Спасибо большое за столь интересный и не обычный проект.

alexrybalkin alexrybalkin

Делаем с командой игру.
В этой сцене мы впервые сталкиваемся с потусторонними силами.

TheDarkestRed TheDarkestRed

Cоздаём новое освещение и цветовой схему 🎮👩‍🎨🌓
https://the-darkest-red.xsollasitebuilder.com

TheDarkestRed TheDarkestRed

Линейка новых скриншотов The Darkest Red 🎮🤺💥🧟🔥

DuCats Games DuCats Games

Jusper, Привет!
Так она же давно в релизе уже больше года)

Jusper Jusper

DuCats Games, а что случилось с Action RPG?

Jusper Jusper

И артово и интерфейсно игруха стала выглядеть намного круче!

win20082007 win20082007

Приветствую друзья! На этой неделе учился смешивать материалы на враге для правильной работы умения невидимости.

TheDarkestRed TheDarkestRed

Бой в шкуре врага 🎮🧟🤺

TheDarkestRed TheDarkestRed

Два способа решить одну задачу 🎮🧟🔥💥
https://vk.com/the_darkestred

alexprey alexprey

О да, "Всем привет, диск сгорел, игра не выйдет" прям классика!

Пустил ностальгирующую слезу, сам через это все прошел, хоть и не выпустил ни одной игры

TheDarkestRed TheDarkestRed

Используй врага, чтобы открыть ворота 🎮 🥶 🧟

TheDarkestRed TheDarkestRed

Тренируем нового монстра 🎮🤺🧟
https://vk.com/the_darkestred

alexprey alexprey

Jusper, ну обычно целая война вокруг этого разворачивается

Логотип проекта Программирование

Записи в базу данных не добавляются, хотя запрос успешен.

Поздавьте меня, я набыдлокодил до нетривиальной ошибки.

Когда я пытаюсь добавить записи в таблицу, запрос никаких ошибок не возвращает, однако в базе данных записи отсутствуют. Но так бывает не со всеми INSERT'ами — на некоторых страницах INSERT'ы работают. Также, если в PHPMyAdmin принудительно ввести любой запрос, он выполнится без нареканий. Запросы выборки работают. Проблема в PHP.

//... класс ответственный за запросы к БД ...
	public function testInsertion ( ) {
		if ($this->link) {
			$stmt = $this->prepareStatement('isrtPrdct', "INSERT INTO `test` (`entry`) VALUES ('test');#");
			if ($stmt->execute( )) {
				printf('Success.');
			} else {
				printf('Failure.');
			}
		} else {
			printf('Failure.');
		}
	}
	
	public function checkInsertion ( ) {
		if ($this->link) {
			$stmt = $this->prepareStatement('checkIsrt', "SELECT * FROM `test` WHERE `entry`='test';#");
			if ($stmt->execute( )) {
				$stmt->bind_result($result);
				do {
					printf('result: \''.$result.'\'');
				} while ($stmt->fetch( ));
			} else {
				printf('Failure.');
			}
		} else {
			printf('Failure.');
		}
	}
//...

Если на одной странице выполнить обе функции, то они вернут 'Success' и 'result: 'test'' соответсвенно. Если функции будут вызваны на разных страницах, то checkInsertion вернёт пустую строку, т. к. в БД ничего не добавляется (хотя по задумке должно).

Я так себе думаю, что проблема в подключении к БД, в закрытии подготовленных запросов или чём-то в подобном. Конечно, я пробовал и непараметизированные запросы $mysqli->query($sql).

Что на Denver'е, что на сервере проблема одинаковая.

В сети встречаются подобные вопросы , но внятного решения я не отыскал. Большинство пишет, что проблема решилась сама собой.

Ответ

В общем вижу 2 причины. Это либо ты открываешь соединение не с основной базой, а какой нибудь внутренней и он все данные пишет в память (поэтому на одной странице и работает). Либо что-то типа отложенной записи. Возможно надо просто подтвердить изменения с помощью commit. Например, на оракле можно делать подтверждение и откат изменений.

Смотрите также:


Комментарии



Если вызывать на разных страницах, то разумеется создадутся два экземпляра класса, которые ну вообще ничем никак не связанны. связать их можно _только_ post|get'ами.
Скрипт, когда пхп его начинает выполнять, ничего о других скриптах не знает.

Mihahail,

Перешел с MySQLi на PDO вместе с постоянным соединением. Работает. Работает из-за того, что постоянне соединение, или из-за того, что PDO?

Я сказал глупость в первом сообщении. Точнее вещь, не относящуюся к теме.

С пдо не работал, только с mysql, но по-видимому из-за постоянного соединения. Могу и ошибаться, так вот: http://www.php.net/manual/ru/pdo.connections.php
По сабжу, да, во-первых, надо закрывать соединение(хотя само должно), во вторых, может кеширование?

Нет коннекшен закрывать не надо, он сам закроется когда скрипт закончит выполнени.

INSERT INTO `test` (`entry`) VALUES ('test');#

Попробуй без ;#. Обычно в таких штуках не требуется завершающий символ

Mihahail,

Уже не раз перечитывал. Мало знать основы, чтобы оптимально работать с БД.

alexprey,

Пробовал.

В общем вижу 2 причины. Это либо ты открываешь соединение не с основной базой, а какой нибудь внутренней и он все данные пишет в память (поэтому на одной странице и работает). Либо что-то типа отложенной записи. Возможно надо просто подтвердить изменения с помощью commit. Например, на оракле можно делать подтверждение и откат изменений.

alexprey,

Вероятно Вы правы на счет фиксации. У меня была отключена автоматическая фиксация.

Транзакций в MySQLi вроде бы нет, зато есть в PDO.

Возможность добавлять комментарии была ограничена