[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PDO
Stasonix
	
$pdo = new PDO("mysql:host=localhost;dbname=test;charset=UTF-8","root","");

if ($result = $pdo->prepare("INSERT INTO `guests`(`guest`) VALUES(:g)"))
{

$g = "Alex";

$result->bindParam(":g",$g,PDO::PARAM_STR);

$result->execute();

}


ничего странного не заметили? Нет? Я тоже. Все прекрасно работает. Казалось бы...

Дело в том что это работает в отдельно взятом файле, допустим index.php, это я специально вынес в отдельный файл и проверил (все ок).

В моем же случае, так как у меня ООП это выглядит так:


public function setGuest($g)
{

if ($result = $this->pdo->prepare("INSERT INTO `guests`(`guest`) VALUES(:g)"))
{

$result->bindParam(":g",$g,PDO::PARAM_STR);

$result->execute();

}

}



как вы думаете что-то поменялось? Я думаю что нет, парадокс, но в 1-м случае запись добавляется в БД, во 2-м нет, что я уже только ни делал и кодировку менял и var_dump'ил $g, кстати это дает положительный результат, делал еще такой манёвр:

if ($result->execute()){ echo "Data added!" }


что выводило "Data added", но при этом сама запись в таблице не появляется, т.е. не происходит этого самого добавления, фантом!

Я просто решил уже сюда на форум написать потому что я просто напросто не знаю что делать в таком случае, ошибок скрипт тоже никаких не выводит. Ну че ему не нравится-то не пойму, кодировка везде UTF-8 (utf8_general_ci), сам файл и с BOM и без BOM пробовал, безрезультатно.



Спустя 7 часов, 43 минуты, 7 секунд (25.06.2012 - 08:52) Placido написал(а):
Нужно смотреть весь код проблемного класса (хотя бы в той части, где создается экземпляр класса PDO) плюс создание экземпляра этого класса и сам вызов метода. Без этого можно только гадать.

Спустя 11 минут, 2 секунды (25.06.2012 - 09:03) Stasonix написал(а):
смысл весь код класса смотреть? Это единственная функция которая вызывается вообще на сайте, т.е. при входе юзера(гостя) создается экземпляр класса, например:

$user = new User();

$user->setGuest($g);


и происходит добавление в бд. ошибки подключения к бд тоже нету, у меня там try-catch, да и так нету.

Спустя 3 минуты, 31 секунда (25.06.2012 - 09:07) Stasonix написал(а):
хмм, пардон, сделал вот так:

	public function setGuest($g)
{

if ($result = $this->pdo->prepare("INSERT INTO `guests`(`guest`) VALUES(:g)"))
{

$g = "Maria";

$result->bindParam(":g",$g,PDO::PARAM_STR);

if ($result->execute()){ $e = "Data added"; $this->err($e); }

}

}


так сработало.

Спустя 5 минут, 38 секунд (25.06.2012 - 09:12) Stasonix написал(а):
проvar_dump'ил $g:

	public function setGuest($g)
{

$this->err($g);

if ($result = $this->pdo->prepare("INSERT INTO `guests`(`guest`) VALUES(:g)"))
{

$result->bindParam(":g",$g,PDO::PARAM_STR);

$result->execute();

}

}


напр. если на вход подано "stas", то результат string(4) "stas", т.е. есть контакт, но в БД так ничего и не добавилось. Я ж говорю фантом.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.