Это прикол?

niko42

Новичок
Здравствуйте.
Что-то меня уже раздражает этот php (не привычно с java)
PHP:
<?php
class DBConnect {
    public $pdo = new PDO("mysql:host=localhost;dbname=db, user, pass"); // ошибка на этом самом месте
}
?>
Parse error: syntax error, unexpected T_NEW in Z:\home\test2.ru\www\class\DBConnect.class.php on line 3

Как так, я не могу объекту присвоить значение?=)
 

niko42

Новичок
а через конструктор у меня другая проблемма=)
PHP:
<?php
    class DBConnect {
        public $pdo;
        public function __construct(){
           $this->pdo = new PDO("mysql:host=localhost;dbname=l2db, root, ");
        }
        public function setInsert(){
            $this->pdo->prepare("INSERT INTO `l2db`.`acount` (`ID`, `eml`, `password`, `name`, `ban`, `IP`)
                                VALUES (NULL, '[email protected]', 'gdfhrer', '232323', NULL, '129.1.3.3')");
        }
    }
$db = new DBConnect();
$db->setInsert();
?>
Нет ошибок -не добавляет в БД)))

P.S. стоит Denwer
 

niko42

Новичок
Дык враппер враппера же.
ProblemFactory() в переложении на PHP :)
Я первый раз в жизнь php в глаза увидел=))

Я обращаюсь к методу через объект - какая проблемма та может быть?

Да ошибся чуток написал в классе - создал объект и обратился к методу. - но это не суть, я исправил в коде.
Суть в другом, что не хочет добавлять в БД и ошибки не выдает.

А код красивый без ошибок))
 

tony2001

TeaM PHPClub
Возможно, пригодится документация метода prepare.
Имя метода как-бы намекает, что и не должно добавляться ничего.
 

tony2001

TeaM PHPClub
Основной класс конект БД, от него наследуется Insert Delte и т.д.
Мне так проще, все пополчкам чтоб было
Предлагаю спуститься на уровень символов в запросе.
$db->execute ('S')->('E')->('L')->('E')->('C')->('T');
Это чтоб было все ООП-стайл (кстати, отличная тпма для очередной пародии на Гэнгнам стайл).
 

Фанат

oncle terrible
Команда форума
не надо наследовать инсерт от коннекта и коннектиться на каждый запрос.
(а по хорошему - даже и метод insert не нужен, если с умом делать)

сделай класс DBAccess, который будет уметь выполнять запросы и возвращать запрошенные данные.

а сами запросы пиши в приложении, вызывая объект DBAccess
который будет коннектиться ровно один раз - в конструкторе.
 

niko42

Новичок
не надо наследовать инсерт от коннекта и коннектиться на каждый запрос.
(а по хорошему - даже и метод insert не нужен, если с умом делать)

сделай класс DBAccess, который будет уметь выполнять запросы и возвращать запрошенные данные.

а сами запросы пиши в приложении, вызывая объект DBAccess
который будет коннектиться ровно один раз - в конструкторе.
Не фига себе PHP умеет держать соед. с БД. Это нонсос какой-то.

Спасибо, Вам за дельный совет!
 

niko42

Новичок
Простите, пожалуйста, за тупой вопрос:
PHP:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000] [1102] Incorrect database name 'l2db, root, '' in V:\home\test2.ru\www\class\DBConnect.class.php:5 Stack trace: #0 V:\home\test2.ru\www\class\DBConnect.class.php(5): PDO->__construct('mysql:host=loca...') #1 V:\home\test2.ru\www\index.php(11): DBConnect->__construct() #2 {main} thrown in V:\home\test2.ru\www\class\DBConnect.class.php on line 5
PHP:
<?php
class DBConnect {
        public $pdo;
        public function __construct(){
           $this->pdo = new PDO("mysql:host=localhost;dbname=l2db, root, ");
        }
        public function setInsert(){
            $this->pdo->execute("INSERT INTO `l2db`.`acount` (`ID`, `eml`, `password`, `name`, `ban`, `IP`)
                                VALUES (NULL, '[email protected]', 'gd4fhrer', '2323423', NULL, '129.1.4.3')");
        }
    }
$db = new DBConnect();
$db->setInsert();
?>
да, да - у меня пароль пустой стоит и что он ругается та?
 

Фанат

oncle terrible
Команда форума
а мануал читай про оператор, который в строчке, на которой ошибка. Какие параметры ему надо передавать вместо тех, которые ты ему передаёшь
 

niko42

Новичок
молодец, это ты правильно выучил.
Конечно мне есть смысл "держать соединение с БД" если у меня более 1 одного запроса.
Но у меня будут только одиночные запросы.
Но когда Вы сказали, php держит соед. с БД я обрадывался и не фига себе подумал, значит не зависимого от того выполняется код или нет он держит соед.
А потом Вы меня огорчили направив на документацию=)))
 

Фанат

oncle terrible
Команда форума
про одиночные запросы тебе только кажется.
Ну, то есть, бывают ситуации, когда выполняется один SQL запрос на НТТР запрос - но очень редко.
 

niko42

Новичок
про одиночные запросы тебе только кажется.
Ну, то есть, бывают ситуации, когда выполняется один SQL запрос на НТТР запрос - но очень редко.
У меня только INSERT 1 раз, без проверки. Таков должен быть скрипт - не я правила устанавливаю.
 
Сверху