Home PHP А.Волос "PHP Практика " Глава 5 Несколько скриптов Класс для работы с БД
Класс для работы с БД PDF Печать E-mail
Автор: А.Волос   

На сайте девушки-программиста www.webnata.ru нашел интересную на мой взгляд библиотеку функций для работы с базами данных. Использовав эту библиотеку как основу, написал класс для работы с базами данных. class baza

Класс baza


<?php
class baza
{
// Задание констант класса
const USERNAME = 'root';
const PASSWORD = 'root';
const DBNAME = 'firma_lux';
const SERVER = 'localhost';

/* Конструктор класса устанавливает соединение с базой данных */
function __construct($name = NULL)
{

if($mysqli = new mysqli(self::SERVER, self::USERNAME, self::PASSWORD, self::DBNAME))
{
$this->connection = $mysqli;
//print(" OK connection <br>");
}
else
{
print(" Error connection to DB <br>");
exit;
}
}

// ****************************************
// СОЗДАТЬ ТАБЛИЦУ
function n_create_table ($table, $data_arr, $charset="cp1251") {
$data_item_arr_all = "";
foreach ($data_arr as $data_arr_items) {
$data = $data_arr_items[1] . " " . $data_arr_items[2];
if (!$data_item_arr_all or $data_item_arr_all=="") {
$data_item_arr_all = $data;
}
else $data_item_arr_all .= "," . $data;
}

$query = "CREATE TABLE $table ($data_item_arr_all, PRIMARY KEY (".$data_arr[1][1]."))

ENGINE=MyISAM CHARSET=$charset;";

if (mysqli_query ($this->connection, $query)) return true;
else return false;
}

// ****************************************
// УДАЛИТЬ ТАБЛИЦУ

function n_drop_table ($table) {

$query = "DROP TABLE ".$table;
if (mysqli_query ($this->connection, $query)) return true;
else return false;
}

// ******************************************
// ПОКАЗАТЬ СПИСОК ТАБЛИЦ ИЗ БД

function n_show_tables () {

$query = "SHOW TABLES";
$res = mysqli_query($this->connection, $query);
if(!$res) { return 0; }
else if(mysqli_num_rows($res)) {
while($result = mysqli_fetch_array($res)) {
$result_new .= $result[0]." ";
}
return $result_new;
}
}

// ****************************************...
// ДОБАВИТЬ СТОЛБЕЦ В ТАБЛИЦУ

function n_add_cell_table ($table, $cell_name, $type="VARCHAR(255)") {

$query = "ALTER TABLE $table ADD $cell_name $type";
if (mysqli_query ($this->connection, $query)) return true;
else return false;
}

//*****************************************
// УДАЛИТЬ СТОЛБЕЦ ИЗ ТАБЛИЦЫ

function n_crop_cell_table ($table, $cell_name) {

$query = "ALTER TABLE $table DROP $cell_name";
if (mysqli_query ($this->connection, $query)) return true;
else return false;
}

//*****************************************
// ДОБАВЛЕНИЕ строки в таблицу

function n_add_data ($table, $data_arr) {

$key_str="";
$value_str="";
foreach ($data_arr as $key =>$value) {
if ($key_str=="") $key_str = $key;
else $key_str .= "," . $key;
if ($value_str=="") $value_str = "$value";
else $value_str .= "," . "$value";
}
$query = "INSERT INTO ".$table." (".$key_str.") VALUES (". $value_str.");";

if (mysqli_query ($this->connection, $query)) return true;
else return false;

}

//*****************************************
// УДАЛЕНИЕ строки из таблицы

function n_crop_data ($table, $where) {

$query = "DELETE FROM ".$table." WHERE ".$where;
if (mysqli_query ($this->connection, $query)) return true;
else return false;
}

// ***************************************
// ВЫБОРКА ИЗ ТАБЛИЦЫ

function n_data_array ($table, $fields_arr, $n_where="", $n_order="", $n_limit="") {

global $link;
$fields_arr_count = count($fields_arr);
$data_item_arr_all = array();

for ($i=0;$i<=$fields_arr_count ;$i++) {

if (!$fields or $fields=="") $fields = $fields_arr[$i];
else $fields .= ",".$fields_arr[$i];
}

if ($n_where!="") $n_where = " WHERE " . $n_where;
if ($n_order!="") $n_order = " ORDER BY " . $n_order;
if ($n_limit!="") $n_limit = " LIMIT " . $n_limit;

$query = "SELECT $fields FROM $table $n_where $n_order $n_limit;";
$res = mysqli_query($this->connection, $query);

if(!$res) { return 0; }
else {

while ($row = mysqli_fetch_array($res, MYSQL_NUM)) {
$data_item_arr_all[] = $row;
}
}
return $data_item_arr_all;
}

//*****************************************
// ЗАМЕНА ДАННЫХ

function n_update_data ($table, $data_arr, $where) {

foreach ($data_arr as $key =>$value) {
if ($value_str=="") $value_str = $key."=".$value;
else $value_str .= "," . $key."=".$value;
}
$query = "UPDATE ".$table." SET ".$value_str." WHERE ".$where;
if (mysqli_query($this->connection, $query)) return true;
else return false;
}

function connect_close()
{

$this->connection->close();
}

}

?>

Ниже будут приведены примеры использования этого класса.


Вверх

Тестирование класса baza



<?php

include("class_baza.php");

//создадим объект типа baza
$db = new baza();


//Создадим таблицу
$data_arr = array (

1 => array ( 1=>"id", 2=>"INT NOT NULL auto_increment" ),
2 => array ( 1=>"name", 2=>"VARCHAR(42)" ),
3 => array ( 1=>"text", 2=>"TEXT" )
);

if($db->n_create_table ("test_new", $data_arr)){

print(" OK <br>");
}
else{
print(" Not OK <br>");
}

//Покажем все таблицы
echo $db->n_show_tables();

//Добавим в таблицу столбец
$db->n_add_cell_table("test_new", "test1", "INT");

//Удалим из таблицы столбец
$db->n_crop_cell_table ("test_new", "test1");


//Добавим в таблицу строку
$data_str_arr = array ( name => "112", text => "223" );

if($db->n_add_data("test_new", $data_str_arr)){

print(" OK <br>");
}
else{
print(" Not OK <br>");
}

//Удалим из таблицы строку
$db->n_crop_data ("test_new", "id=1");

//Выведем из таблицы данные
$fields_arr = array ( 1 => "id", 2 => "name", 3 => "text" );
print_r ($db->n_data_array ("test_new",$fields_arr,"id=5","id ASC","1"));

//Изменим данные в таблице
$data_up_arr = array ( name => "222", text => "111" );
$db->n_update_data ("test_new", $data_up_arr, "id=2");

//Закроем соединение с БД
$db->connect_close();

?>


Класс работает!

 

Правильный CSS!

Обновлено 07.10.2015 06:52