Вурдалак
Продвинутый новичок
https://dev.mysql.com/doc/refman/5.5/en/identifiers.htmlPHP:$k = str_replace (array ('`', '\\'), '', $k); //пофиксил
https://dev.mysql.com/doc/refman/5.5/en/identifiers.htmlPHP:$k = str_replace (array ('`', '\\'), '', $k); //пофиксил
простота никому не нужна уже(не надо тащить в профессию насильно!!!), а то так и писали бы на асмблере. Нужны инструменты.Там другой подход.
По поводу заворачивания SQL в отдельные операторы типа select('name')->from('table')->where->addcondition() было обсуждение в топике с Amdy, возвращаться я к нему не хочу.
Возможно, я неправ, но такой подход, во-первых, не устраивает лично меня, а во-вторых, перетащить на него орду пыхапёров - задача нереальная.
инструмент должен быть ПРОСТЫМ.
причина бешеной популярности пыха -в простоте.
я хочу соблюсти максимальную простоту (можно назвать это близостью к говнокоду) при максимальной же безопасности
их существование?) идеальный код?У всех существующих решений есть фатальный недостаток.
<?
имеется в виду интерфейс для работы с бд, не? какой гуй?а не можем написать себе нормальный гуй
любой гуй! мега гуй...имеется в виду интерфейс для работы с бд, не? какой гуй?
^^^ тут я думаю что разговор про соеденение НЕ про запросserglt
а можешь объяснить, для чего пишется именно так,
а неPHP:$sqlAlbum = Sql::getInstance ('album');
?PHP:$sqlAlbum = new Sql('album');
это дает правильные имена, и вызывая конструктор с аттрибутом ключа соеденения уже ничего не нарушится, только что создастся новый обьект в памятия бы все же в конфиге все же сделал
а уже в объекте ->selectDatabase('other')PHP:return array ( 'default' => array( 'host' => 'localhost', 'port' => 3306 ....), 'other' => array(...), );
Как-то так.
unset($opt); // I am paranoid
http://lurkmore.to/Фатальный_недостатоких существование?) идеальный код?
PHP:<?
class Connection_Mysql {
public function __construct(array $connParams) { ... }
// ...
}
class Connection_Pool {
protected $config;
protected $connections = array();
// @param $config array( 'name1' => array(connection params), 'name2' => array(connection params)... )
public function __construct(array $config) {
$this->config = $config;
}
public function __get($key) {
if (!isset($this->connections[$key])) {
$this->connections[$key] = $this->createConnectionByName($key);
}
return $this->connections[$key];
}
protected function createConnectionByName($name) {
if (!isset($this->config[$name])) {
throw new Exception("Unknown connection name: '$name'");
}
return new Connection_Mysql($this->config[$name]); // вообще тут может быть фабрика - всякие там мемкеши, монги...
}
// тут еще можно сделать всякие прикольные штуки типа итератора по соединениям, глобальной транзакции и все такое
}
// ..........
class Model {
protected $Pool;
protected $connectionName = 'default';
protected $Connection = null;
public function __construct(Connection_Pool $ConnectionPool) {
$this->Pool = $ConnectionPool;
}
protected function getDb() {
if (null === $this->Connection) {
$this->Connection = $this->Pool->{$this->connectionName};
}
return $this->Connection;
}
}
Эх. не понимаю я, почему нельзя пул держать в том же классеЭммм... Ну.
Тут уж надо либо разделять pool и connection, либо продолжать тупо херачить mysql_connect(), а делать промежуточное решение — это «не нам и не вам».fixxxer
Костя, я хочу сделать просто! Как можно проще!
Пишу-то я не только для себя. я хочу переучивать всех этих
Да, я знаю, что это утопия. но может, и получится. если код будет достаточно простым в использованииmysql_connect() oir die("Could not connect to database");
mysql_query() or die("Error")
mysql_fetch_array()