[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запросы через MySQLi
Страницы: 1, 2
Astin
Решил сделать для себя сайтик, ну так скажем почти сделал, сейчас потихоньку
допиливаю.

Решил сделать его работу с бд на MySQLi, все равно рано или поздно придется
переделывать на MySQLi если сайт будет работать на MySQL, ну и штоб не делать
двойную работу решил подучить то расширение

Для сайтика хочу сделать админку свою. ну и для этого решил немного потренироваться
с запросами. Вроде получается и работает без ошибок

Седня вечером решил боле сложные для себя запросы написать

1) Запрос на создание таблицы, если нету такой то создаем, если есть то показяваем
сообщение что есть такая
2) Удаление таблицы, если есть такая то удаляем, если нет такой то показываем
сообщение что нет такой
3) Добавление или обновление данных в таблице. Здесь я добавляю данные в
созданную таблицу из другой таблицы, но если такие данные есть то просто их
обновляем

Для работы с БД использую класс Twina, правда поменял под себя
всего пару строк в классе

Ну и вот что вышло

$tabl = 'a_dd';

// Создаем таблицу

if (isset($_POST['sbr'])) //Если нажата кнопка
{
$resul = DB::Query("SHOW TABLES LIKE '$tabl'"); //Запрос на существование таблицы

$rowt = $resul->num_rows;

if ($rowt > 0) //Если в таблице строк больше 0 то сообщаем что такая таблица уже есть
{
echo 'Есть таблица - '.$tabl;

} else { //Если такой таблицы нет создаем ее

DB::Query("CREATE TABLE IF NOT EXISTS `".$tabl."` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`entitl` varchar(200) NOT NULL,
`descrip` varchar(255) NOT NULL,
`keywor` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8"
);

echo 'Таблица - '.$tabl.' создана';
}
}

//===================================================
// Удаление таблицы


if (isset($_POST['delet'])) //Если нажата кнопка
{
$res = DB::Query("SHOW TABLES LIKE '$tabl'"); //Запрос на существование таблицы

$rowt = $res->num_rows;

if ($rowt > 0) //Если в таблице строк больше 0 то удаляем таблицу
{
DB::Query("DROP TABLE `".$tabl."`");

echo 'Таблица - '.$tabl.' удалена';

} else {

echo 'Таблицы - '.$tabl.' НЕ Существует';
}
}


//===================================================
// Добавление или обновление данных в таблице


if (isset($_POST['editin'])) //Если нажата кнопка
{
$query = "INSERT INTO `".$tabl."` (id, title, entitl, descrip, keywor)
SELECT `id`, `title`, `entitl`, `descrip`, `keywor` FROM `a_meta`
ON DUPLICATE KEY UPDATE `"
.$tabl."`.`id` = `a_meta`.`id`";

//подготавливаем запрос
$stmt = DB::$link->prepare($query);

//выполняем запрос
$stmt->execute();

if ($stmt->affected_rows > 0)
{
echo 'Изменено '.$stmt->affected_rows.' записей';

} else {

echo 'Записи НЕ изменены';
}
}


Мне больше интересен третий запрос вот в чем.
Для того чтоб получить количество затронутых строк приходится использовать
еще две функции
mysqli_prepare — Подготавливает SQL выражение к выполнению
и
mysqli_stmt_execute() - Выполняет подготовленный запрос

Когда ка в MSQL можно воспользоваться всего то mysql_affected_rows()

И вот теперь мне интересно вообще можно ли обойтись без этих двух
функций и кто нибудь может объяснить поконкретнее значимость тих двух
функций, а то читаю мануал ну и вроде как понятно что они нужны, но не
пойму их значимость.

И еще, про эти три запроса, правильно ли написаны или что то нужно изменить
или мож поправить

_
Быстрый ответ:

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