КОнтакты, предложения, отзывы

.rar или .zip
Вложение
Онлайн-чат
На этом сайте, вы найдёте полезную информацию, практические советы в области веб-программирования, веб-дизайна и веб-разработок в целом. Мы с удовольствием поделимся с вами реальными примерами и решениями задач, связанных с jQuery , JavaScript , PHP и MySQL , версткой сайтов , поможем разобраться новичкам с современными технологиями, такими как Ajax , HTML5 , CSS3 и многими другими.

MySQLI - процедурный подход

Соединение с сервером и определение кодировки

Оч просто:
$bd = mysqli_connect('localhost', 'root','','mysite')
  or die('Нет контакта'.mysqli_connect_error());
I параметр - имя хоста, обычно это всегда localhost, если не приходится подключаться к удалённому серверу, II - имя пользователя, III - пароль и IV - имя базы данных.
Если в процессе работы нужно будет сменить базу данных, для этого нужно ввести команду
mysqli_select_db($bd, 'имя_базы');
I параметр - идентификатор соединения, полученный с помощью mysqli_connect().
Желательно во все файлы ставить хэдер с указанием кодировки
header ("Content-Type:text/html;charset=UTF8", false);
или создать в корне сайта файл .htaccess и прописать в нём строчку
AddDefaultCharset utf-8
Устанавливаем внутреннюю кодировку скрипта:
mb_internal_encoding('UTF-8');
Ваши базы данных, таблицы и поля тоже должны (желательно:)) быть в кодировке utf-8.
if (!mysqli_set_charset($bd, "utf8")){
  printf("Ошибка при загрузке набора символов utf8: %s\n", mysqli_error($bd));}
Задает набор символов по умолчанию, который будет использоваться при обмене данными с сервером баз данных.
mysqli_character_set_name ( $bd ) Возвращает текущую кодировку, установленную для соединения с БД.
/* Вывод текущей кодировки */
$charset = mysqli_character_set_name($bd);
printf ("Текущая кодировка - %s\n",$charset);

Безопасность - прежде всего

Функция для предотвращения внедрения вредного SQL и XSS кода: Необходимо пропускать через неё все введённые пользователем данные если не хотим чтобы нам напакостили школохакеры :)
function mysqli_escape($bd, $string){    
  $string = trim($string);
  if (get_magic_quotes_gpc()){$string = stripslashes($string);}
  $string = mysqli_real_escape_string($bd ,$string);  
  return htmlentities($string, ENT_QUOTES, "UTF-8");
}
Удалит лишние пробелы
Если директива magic_quotes_gpc() включена (ПХП < 5.4) обрежет слеши
Экранирует все спецсимволы MySQL
И наконец, htmlentities преобразует все возможные символы в соответствующие HTML-сущности
Вернёт обезвреженную строку

Ну например, кто-то хочет оставить нам в комментарии бомбочку:
// записываем коммент в переменную:
$comment = $_POST['comment'];
// обезвреживаем:
$comment = mysqli_escape($bd, $comment);
// смело формируем запрос:
$sqli = "insert into `comments` (`comment`) values ('$comment')";

Выполнение запросов

Для этого существует функция mysqli_query():
// Формируем запрос:
$sql="SELECT * FROM `statti`";
// выполняем:
$result=mysqli_query($bd, $sql);
Функции mysqli_query() также нужно передать идентификатор соединения с бд

Получение результатов запроса

При процедурном подходе для получения количества возвращённых строк используется функция mysqli_num_rows(), которой необходимо передать идентификатор результата mysqli_query():
$num_results = mysqli_num_rows($result);
Эта информация нужна, если планируется обрабатывать или отображать результаты, поскольку позволяет организовать цикл по ним:
for ($i = 0; $i < $num_results; $i++){
  $row   = mysqli_fetch_assoc($result);
  // Приплюсовываем к переменной $text возвращаемые строки результата:
  $text .= .$row['title']."<br>".$row['category']."<br>".;
}

// выводим результат на экран:
echo $text;
В каждой итерации этого цикла происходит вызов mysqli_fetch_assoc(). Эта функция извлекает каждую строку из результирующего набора и возвращает её в виде массива, в котором каждый ключ - имя столбца таблицы, а значение - его текст.
вместо массива с именованными ключами можно воспользоваться нумерованным массивом, применив mysqli_fetch_row():
$row = mysqli_fetch_row($result);

определение числа рядов в выборке

// Формируем запрос:
$sql="SELECT * FROM `table`";
// выполняем:
$result=mysqli_query($bd, $sql);
/* определение числа рядов в выборке */
$row_cnt = mysqli_num_rows($result);
printf("В выборке %d рядов.\n", $row_cnt);
/* закрытие выборки */
mysqli_free_result($result);

mysqli_affected_rows()

Возвращает число строк, затронутых последним INSERT, UPDATE, REPLACE или DELETE запросом. Для запросов вида SELECT mysqli_affected_rows() работает как mysqli_num_rows().
mysqli_query($bd, "UPDATE `table` SET `citata`='А включаешь - и работает!' WHERE `id` = 1");
printf("Затронутые строки (UPDATE): %d\n", mysqli_affected_rows($bd));

mysqli_fetch_all(результат запроса[, флаг])

Выбирает все строки из результирующего набора и помещает их в ассоциативный массив, обычный массив или в оба.
$sqli = "SELECT * from `citata`";
$result = mysqli_query($bd, $sqli);
print_r( mysqli_fetch_all($result));
Флаги:
MYSQLI_ASSOC - ассоциативный массив
MYSQLI_NUM - числовая нумерация (по умолчанию)
или MYSQLI_BOTH - оба массива

mysqli_fetch_array(результат запроса[, флаг])

Выбирает одну строку из результирующего набора и помещает ее в ассоциативный массив, обычный массив или в оба. Флаги такие же как и в предыдущей функции. При задании флага MYSQLI_ASSOC функция будет вести себя идентично mysqli_fetch_assoc(), а при MYSQLI_NUM идентично функции mysqli_fetch_row().

Отсоединение от базы данных

Освобождение результирующего набора выпoлняется следующим образом:
mysqli_free_result($result);
Затем можно закрыть соединение с базой данных:
mysqli_close($bd);
В явном отсоединении нет особой необходимости, по завершении выполнения сценария соединение будет закрыто автоматически.
2015.06.17 166

Останавливают полицейские программиста поздно ночью и спрашивают: - Твой адрес? - 127.0.0.1
Войдите или Зарегистрируйтесь чтобы оставить комментарий

Комментарии


    Яндекс.Метрика Яндекс.Метрика