Дело такое: хочу написать отдельные функции для определенных операций для работы с базой (запись, чтение, апдейт и тп), как сделать так, чтобы подключение к базе было видно функциям, а то не создавать же в каждой функции новое подключение. Если не затруднит, покажите пожалуста на каком-нить простеньком примере. Очень надо, а то процедурами уже скрипт разросся, нужно функции осваивать. и еще.. использую PHP4, PDO не юзаю.
Используйте ООП: PHP: <? class myDb { private $handle; function __construct() { // соединение с базой // $this->handle = ... } function insert($table, $rows) { // вставка столбца return $id; } // ... } $db = new myDb; $id = $db->insert('myTable', array('a'=>123)); $db->update('myTable', array('a'=>123)); $db->deleteById('myTable', $id);
Когда вызываешь mysql_query(). можно опускать второй аргумент, и тогда будет использоваться текущее соединение.
К ООП. Если вы хотите что бы соединение происходило при первом использовании то вам подойдет паттерн singleton: PHP: <? class myDb { static private $instance; static function getInstance() { if (!self::$instance) self::$instance = new self; return return self::$instance; } private $handle; function __construct() { // ... } // теперь, в любом месте: myDb::getInstance()->insert('...'); myDb::getInstance()->update('...'); myDb::getInstance()->delete('...'); // или $db = myDb::getInstance(); $db->insert('...'); $db->update('...'); $db->delete('...');
Вот, как мне заставить работать это.. Код (Text): $db = mysql_connect("localhost","admin","pass"); mysql_select_db("my_base", $db); function view_cont(){ $row = mysql_query ("SELECT * FROM table", $db); $arrow = mysql_fetch_array($row); do { echo "$arrow[id]"; } while ($arrow = mysql_fetch_array($row)); } view_cont(); так же функции update_cont() и тп. чтобы подключение было общее. Вышеописанное я что-то недогоняю, опыта совсем нет. Или хотя бы скажите как все это называется, погуглю, а то не могу правильно сформировать поисковый запрос, или подскажите что почитать..
Браво! Работает.. неужели все так просто, или есть какие то минусы у этого способа. Но факт что работает.