Friday, November 17th, 2017

????????????? ext/mysqli: ????? ? ?????????????? ?????????

Published on Март 5, 2009 by   ·   Комментариев нет

1. ?????????????? ?????????

?????? ????????????? ??? ?????????, ??????? ????????? ???? ????????????? PHP ? MySQL. ??? ????????????, ??? ???????? ???????? ???????? ???????? ?????? ? ?????? ?????? ? ???????????????? ? ????? ???????????? ???????? PHP ??? ???????? ??????? ??????? MySQL.

???????? ???????? ?? ??, ??? ? ????? ?????? ??????? ?????? ??? ??????????? ????????? ??????????? ? ??????? ????????.

?????????? ?? ????????? PHP ? MySQL ??????? ?? ????? ?????? ??????;

2. ????????

??????? ? ???????? 90?, ext/mysql ??????? ???????? ?????? ????? PHP ? MySQL. ???? ? ??? ??????? ?????????? ? ???????? ????? ? ??????, ? ?????, ext/mysql ????? ???? ???? ??????? ? ??? ? ???? ? ??????????? ??? ? PHP, ??? ? ? MySQL.

?????? ? ?????????? PHP 5 ? MySQL 4.1 ??? ?????????? — ?????? ?????????????? ????????? ?????????? ???????? ??????.

? ext/mysql ??????? «???????????, ??????????? ????????????»: ? ?????? ??????? ??? mysql_pconnect() [1] , ??????????? ?? ????????? ? ?????????????? ??????????? [2]. ????? ????, ?????????? ??????????????? ????? ????????? ext/mysql ? ????, ??? ?????????????? ?????????? ??????????? MySQL, ?? ??????? ???????? ? ext/mysql, ? ext/mysqli.

? ??????? ????????? ??? ???????????, ????? ?????? ?????? ????????? ?????????? PHP 5, ??????? ???????????? ????? ??????????? MySQL 4.1 . ??? ?????????? ???????? ???????? ext/mysqli, ??? «i» ???????? ???? ?? ????: improved(??????????), interface(?????????), ingenious(???????????????), incompatible(?????????????) or incomplete(????????). [3]

2.1 ???????? ????

?????????? ?? ???????? ????? ???????? ?????? ?????????? ????:

  • ???????? ?????????????. ??? ext/mysql ???? ????? ??????? ? ?????????????. ???????????? ???????????? ???????????????? MySQL ??????????? ??????????? ??????????? ? ?????????? ??? ??? ???? ?????? ? ??????????? ?? ?????? ?????????? ??????????. ?????? ???????? ????????? ????????? ???????????????? ? ??????????? ?? ???????????? ???????.
  • ?????? ?????????????. ?????????? ?????? ???? ????? ????????? ???????????? ?????????? ?????????? MySQL, ????? ??????? ?????????????????? ?????????? ????? ?????????????? ? PHP.
  • ???????? ?????????????. ???? ????????????? ????? ext/mysql ? ext/mysqli ?? ????????, ???? ????????? ???????????? ?????? ??? ?????????? ???????????? ?????????? ? ext/mysql ?? ext/mysqli.

2.2 ???????? ???????????

Ext/mysqli ???????????? ????? ???????????, ??????????? ? ????????? ??????? MySQL, ? ?????????? ????? ???????.

???????? ??????????? ??????????:

  • ??????????? ?????????, ????? ??????? ?? ????????? ext/mysql.
  • ????????-??????????????? ?????????, ??????? ????????? ???????????? ?????, ????? ??????? ? ???????????, ?????? ??????????? ?????????.
  • ????????? ?????? ????????? ????????? MySQL, ?????????? ? ?????? 4.1. (????? ???????? ????? ??????????, ??? ??????, ? ???????????? ????? ??????? ????? ????????????, ???????? ?????????????? ?????????).
  • ????????? ??????? ?????? ???????????? ?????????? ?????????? MySQL C, ? ??? ????? ????????? ??????? ?????????? ?????????? ? ??????? mysqli_init() ? ?????? ???????. ????? ????, ?????????? ????? ????????? ?????????????? ??????? ???????????, ?????? ??????, ?????????? ????????? ? ??????????.

2.3 ????? ???????????

????? ????????? ??????? ? ??????????????? ??????????? MySQL 4.1 , ????? ?? ????? ?????????? ?? ????????????? ext/mysqli?

? ?????????? ? ??????????? ???????????, ext/mysqli ????? ????????? ???????????? ???????????:

  • ??????? ??????? ????????. ??????????????????, ??? ? ??????????, ??? ? ? MySQL, ???????? ??????????? ????????, ?????? ???????? 40-???????? ?????????? ?????????????????? ?? ????????? ? ext/mysql.
  • ????????? ????????????. ? ?????? ??????? MySQL RDBMS (??. ??????? ???????? ? ????? ?????? — ????. ???????????), ???????????? ??????????? ???????? ??? ??????? ?????? ? ???? ? ????? ?????????? ?????? ????????????. ????? ????????? ?????????????? ??????? ??????? ? ????????? ?????????? ? ?????? ????????? ??????????? ????? ???????????? ??? SSH.

2.4 ?????????????? ? ?????????????

????????? ??????? ext/mysqli ?????? ?????????? ?? ??????? ??????????. ? ????? ??????????? ???????????? ??????? ? ??????? ? ?????????, ????????? ? ???????, ????????? ??????????? ???? ??????:

  • ??????????? ? ???? ?????? ?? ?????????. ???? ?? ???? ?? ???????????? ? ???, ext/mysqli ?? ??????? ????? ?? ???.
  • ?????????? ?? ????????? (link). ?????????? ???? ?????????? ? ?????????? ? ???????? ???? ??????, ??????? ?? ?????? ????????????, ???? ?? ????????? ? ext/mysqli ????? ??????????? ?????????, ???????? mysqli_query($link, $query);

3. ???????? ??? ???!

??????, ????? ?? ??????, ??? ??????????, ?? ?????? ????????????? ???, ??????? ?????????????, ??? ???????? ? ???????? ????? ??????????. ???? ??????????????? ???, ??????????? ? ???? ??????, ?????????? ???? ?????? «world», ??????? ????????? ???????? ?? ????? http://www.mysql.com/documentation/index.html.

3.1 ??????? ?????????????

??? ??????? ??????, ??????? ??????????? ? ???????? MySQL, ???????? ?????? ??????? ? ??????? ????? ??????????, ??????? ?????????? ??????? ? ????? ??????????? ?????????????? ????????? ??????? ? ????????? ??????????.

<?php 

/* ??????????? ? ??????? MySQL */ 
$link = mysqli_connect( 
 "localhost", /* ????, ? ???????? ?? ???????????? */ 
 "user", /* ??? ???????????? */ 
 "password", /* ???????????? ?????? */ 
 "world"); /* ???? ?????? ??? ???????? ?? ????????? */ 

if (!$link) { 
 printf("?????????? ???????????? ? ???? ??????. 
 ??? ??????: %s\n", mysqli_connect_error()); 
 exit; 
} 

/* ???????? ?????? ??????? */ 
if ($result = mysqli_query($link, 
 "SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5")) { 

 print("????? ??????? ??????:\n"); 

 /* ??????? ??????????? ??????? */ 
 while( $row = mysqli_fetch_assoc($result) ){ 
 printf("%s (%s)\n", $row["Name"], $row["Population"]); 
 } 

 /* ??????????? ???????????? ?????? */ 
 mysqli_free_result($result); 
} 

/* ????????? ?????????? */ 
mysqli_close($link); 
?>

??????????? ???????? ?????? ??????? ???-?? ?????:

 ????? ??????? ??????:

Mumbai (Bombay) (10500000)
Seoul (9981619)
Sao Paulo (9968485)
Shanghai (9696300)
Jakarta (9604900)

??? ????? ?? ????, ext/mysqli ? ext/mysql ????? ???? ????? ??????. ???????????? ???????????? ????????? ???????? ??, ??? ??????????? ????? ext/mysqli ????????? ????? «???????????».

????????, ??? ??? ???????? ?? ?????? ??????????? ?????? ??? ?? ???? ???? ? ????? ????? ? ??????? ???????????? ??????? ????????? ?? ??????.

3.2 ????????????? ????????-???????????????? ??????????

????????-??????????????? ????????? ????????????? ??????? ????? ?????????? ? ????? ????????????? ? ??????? ????? ????????????? ext/mysqli. ???, ??????????? ????, ?????????? ?? ?? ????????, ??? ? ??????????, ??????, ??????? ????????? ???????? ???????, ?? ??????? ????? ???????? ????????:

  • ??? ?? ????? ???? ???????? ??????????, ???????????? ? ????? ????????. ?????????? ? ??????????? ?????????? ? ????? ???????? $mysqli ? $result ? ???????? ??? ?????? ??????????????? ???????.
  • ????? ???????????? ??????? ?? ??????????????? ?????? ?????? ??????? ? ?????????????? fetch_assoc(), ?? ????? ???? ???????? ????????????? ????????????? ??????????????? ??????. ????? ??? ? ?????????? ? ???????????, ?? ?????????? ? ??????? $result.
  • <?php 
    
    /* ??????????? ? ??????? MySQL */ 
    $mysqli = new mysqli("localhost", "user", "password", "world"); 
    
    if (mysqli_connect_errno()) { 
     printf("??????????? ? ??????? MySQL ??????????. 
     ??? ??????: %s\n", mysqli_connect_error()); 
     exit; 
    } 
    
    /* ???????? ?????? ??????? */ 
    if ($result = $mysqli->query("SELECT Name, Population FROM 
     City ORDER BY Population DESC LIMIT 5")) { 
    
     print("????? ??????? ??????:\n"); 
    
     /* ???????? ?????????? ???????: */ 
     while( $row = $result->fetch_assoc() ){ 
     printf("%s (%s)\n", $row["Name"], $row["Population"]); 
     } 
    
     /* ??????????? ?????? */ 
     $result->close(); 
    } 
    
    /* ????????? ?????????? */ 
    $mysqli->close(); 
    ?>

4. ?????????????? ?????????

??????, ????? ?? ????????? ??? ????????????? ??????????, ?????????? ????????? ????? ????????????.

?????????????? ????????? ????????????? ????????????? ??????????? ????????? ???????, ??????? ???????? ????? ???????????, ????? ????? ??????? ?????????????????? ? ????? ?????? ? ?????????.

?????????????? ????????? ????? ???????????? ????? ?????????: ? ????????? ??????????? ? ? ????????? ????????????.

4.1 ? ????????? ???????????

?????????????? ????????? ? ????????? ??????????? ????????? ????????? ??????? ???????? ? ??????? ?? ?? ??????? MySQL. ????? ????? ??????? ??????, ??????, ??????????? ??????, ???????????? ??????? MySQL, ??? ????????? ?????????????? ?????? ? ???????????.

???????? ??????? ???????? ? ????????????? ?????????????? ????????? ? ????????? ??????????? ?????.

????????? ?????? ??????? ? ?????????? ??????? MySQL. ?????? ??? ????????, ????????? ??? ????????????, ????? ?????????, ??? ?? ????? ?????, ? ????????? ??? ? ??????????? ??????. ????? ?????? ?????????? ?????????????, ??????? ????? ???? ? ?????????? ??????????? ??? ????????? ? ??????????????? ?????????.

????? ????? ??????? ??????, ??????, ??????????? ??????, ???????????? ??????? MySQL ? ????????? ?????????????? ?????? ???????????.

? ???? ???????? ????????? ????????? ????? ?????? ???????.

???? ??????? ?????????? ??????? MySQL ?????? ???? ???. ??? ?????????? ????????? ?????????? ?????? ??????, ??????????? ??? ?????????? ???????.

??????? ????? ?????? ?? ???????? ? ????????? ??????? ????????????? ?????? ???? ???, ?????? ????, ????? ?????? ??? ?????? ???.

????? ????, ??? ????????, ??????? ???????? ????????? ?????????? ??????, ??????? ?????? ?????????. ????????, ???? ? ??? ???? ?????? ????:

INSERT INTO City (ID, Name) VALUES (NULL, "Calgary");

?? ?????? ??? ??? ?????????? ??????? ????? ???????? ???? ????? 16 ???? ?????? ??????? 60 ??? ????? ????. (??? ???????????? ????? ???????? ??????? ?? ??? ?????? ????? ?????????????? ??????????????? ?????????, ????? ?????? ??????? — ??? ???????????? ???????? ?????? — ? ?.?., ?? ?? ???????? ??????? ?? ?????? ???????.)

?????? ??????? ?? ?????? ????????? ????? ??????? ????? mysql_real_escape_string(), ????? ?????????, ??? ??? ?????? ????? «SQL-???????» [4] ?????? ?????, ?????? ? ?????? MySQL ???????? ???, ????? ?????????, ??? ????????? ?????? ????????? ?????????? ??? ?? ?????????????? ? ?????????????? ??????????.

?????? ??????? ???????? ???-?? ???:

INSERT INTO City (ID, Name) VALUES (?, ?);

???? «?» ????? ???????????? ? ??????????? ????, ??? ???????????? ?????????? ??????, ???????? ?????? ????? ???? ????????? ??

SELECT Name FROM City WHERE Name = "Calgary";

?

SELECT Name FROM City WHERE name = ?;
<?php 
$mysqli = new mysqli("localhost", "user", "password", "world"); 

/* ???????? ??????????  online casino */   
if (mysqli_connect_errno()) { 
 printf("??????????? ??????????: %s\n", mysqli_connect_error()); 
 exit(); 
} 

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)"); 
$stmt->bind_param("sssd", $code, $language, $official, $percent); 

$code = "DEU"; 
$language = "Bavarian"; 
$official = "F"; 
$percent = 11.2; 

/* ?????????? ??????????????? ????????? */ 
$stmt->execute(); 

printf("%d Row inserted.\n", $stmt->affected_rows); 

/* ???????? ?????????? ? ?????????*/ 
$stmt->close(); 

/* ???????? ??????? CountryLanguage */ 
$mysqli->query("DELETE FROM CountryLanguage WHERE Language="Bavarian""); 
printf("%d Row deleted.\n", $mysqli->affected_rows); 

/* ??????? ??????????? */ 
$mysqli->close(); 
?>

???????? ???????? ?? ??, ??? ?????? ?????????? bind_param() ???????? ???????? ??????. ??? ?????? ???????, ???????????? ??? ??????????? ????, ??? ??????????? ????????? ?????? ???? ????????????????.

? ?????? ???????????????? ???????? «sssd» ????????, ??? ???????? ?????? ???? ?????????? $code, $language ? $official ????? ??????? ??? ??????, ? ????????? ???????? $percent ????? ????????? ???????? ???? double ? ????????? ???????.

??? ?????? ?????????? ?????????? ? bind_param(), ?????? ???? ???? ????? ? ?????? ???????, ??????? ????????, ??? ?????????? ????? ??????????. ????????

$stmt->bind_param("s", $foo); 
$stmt->bind_param("si", $foo, $bar); 
$stmt->bind_param("sid", $foo, $bar, $baz);

?????????? ????? ???????????? ??, ??? ?????????? mysqli ?????, ??? ??????????? ?????? ??? ??????? ?????????????.

??????????? ????? ????? ??????: ?????? ? ???????? ?????????? ????? ?????????????? ??? ?????????????, ???????????? ????? (double) ??? ??? ??????.

????? ??????? ??????????? ???, ??????????? ?????????? ????? (??????? ???????? ???????) ????????.

????????? ??????? ???????????? ???? ? ??????????? ?????????????:

????????????? ???? ??? ???????
i ??? INT ????
d DOUBLE ? FLOAT
b BLOB»?
s ????????? ????

4.2 ? ????????? ????????????

?????????????? ????????? ? ???????????? ???????????? ????????? ??????????? ?????????? PHP-??????? ? ????????? ????? ?????? ? ?????????????? ????????? ???????.

??????? ?????????? ?????:

  • ??????? ??????.
  • ????????? ?????? MySQL ?????????? ??????.
  • ????????? ?????????? PHP ? ???????? ? ????????? ???????.
  • ????????? ?????? MySQL ????????? ??????.
  • ????????? ?????????? ?????? ???? ?????? ? ??????????? ??????????.

??? ??????? ???????? ????, ?????????????? ???????:

<?php 
$mysqli = new mysqli("localhost", "user", "password", "world"); 

if (mysqli_connect_errno()) { 
 printf("??????????? ??????????: %s\n", mysqli_connect_error()); 
 exit(); 
} 

/* ?????????????? ????????? */ 
if ($stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) { 
 $stmt->execute(); 

 /* ???????????? ?????????? ? ????????? */ 
 $stmt->bind_result($col1, $col2); 

 /* ??????? ???????? */ 
 while ($stmt->fetch()) { 
 printf("%s %s\n", $col1, $col2); 
 } 

 /* ???????? ????????? $stmt->close(); 
} 
/* ???????? ?????????? */ 
$mysqli->close(); 

?>

4.3 ????????????? ???????? ?????????? ? ??????????? ??????

??? ????? ?????? ??????, ??????????????? ????????????? ? ???????? ??????????, ? ???????? ??????????? ????????????:

<?php 
$mysqli = new mysqli("localhost", "user", "password", "world"); 

if (mysqli_connect_errno()) { 
 printf("??????????? ??????????: %s\n", mysqli_connect_error()); 
 exit(); 
} 

/* ?????????????? ????????? */ 
if ($stmt = $mysqli->prepare("SELECT Code, Name 
 FROM Country WHERE Code LIKE ? LIMIT 5")) { 

 $stmt->bind_param("s", $code); 
 $code = "C%"; 

 $stmt->execute(); 

 /* ?????????? ?????????? ??? ?????????????? ?????????*/ 
 $stmt->bind_result($col1, $col2); 

 /* ??????? ???????? */ 
 while ($stmt->fetch()) { 
 printf("%s %s\n", $col1, $col2); 
 } 

 /* ???????? ????????? */ 
 $stmt->close(); 
} 
/* ???????? ??????????? */ 
$mysqli->close(); 

?>

5. ??????

? ???? ?????? ?? ??????? ????? ???????????? ? ??????????? ext/mysqli, ? ????? ??????? ????????? ??????? ??? ????????. ? ????? ??????? ?? ?????? ????????, ??? ???????????? ? ???????? ?????? ?? ?????????????? ????????? MySQL ? ?????? ??????????? ???????? ????????????? ????????-???????????????? ?????????? ? ext/mysqli.

6. ??????? ????????

ext/mysql — ?????? ?????????? PHP ??? ?????? ? MySQL. ?? ???????????? ???? ???????????? MySQL ?????? 4.1 ? ????.

ext/mysqli — ????? ?????????? PHP 5 ??? ?????? ? MySQL. ???????????? ??????????? MySQL ?????? ?? 3.22 ?? 5.0

?????????? ?????????? MySQL — ????????? MySQL RDBMS (MySQL Relational DataBase Management System — ??????? ?????????? ??????????? ????? ?????? MySQL — ????. ???????????), ??????? ????????? ?????????? ???????? ? RDBMS.

?????? MySQL — ????????? MySQL RDBMS, ??????? ???????????? ? ???????? ?? ???????, ????????? ???????? ?????????????? ?????? ?????? ???? ? ?.?.

[1] — ??????? mysql_pconnect() ???? ??????? ??? ?????????????? ????????? ?????????? ?????? ?? ???????????? ? ?????? ?????????? ? ???????? MySQL. ? ?????????, ??-?? ?????????????? ????? ????????????? ??????? Apache ? PHP, ??????? ?????? ?? ?????, ???????????? pconnect, ??? ?????? ?????????? ?????? MySQL ??????? ??????????? ?????????????? ??????????, ??????? ?????? ???????? ??????????? ???????? ?????? ? ???? ??????.

[2] — ??????????? ??????????????? ?????????? ????????? ???????????? ??????? ??????? ????????????? ??????????? ? ????? ?????? (???? ?????????? ?????????? ? ?????????? ?????????? ? ???????????????? ????? php.ini). ??????????? ?????????? ?? ????????? ???????? ?? ?????????? ????????. ????????? ???????? ?????????? ? ????? MySQL ?????????? ???????????? ???????????, ???? ???????? ?????????? ?? ??? ???? ?????? ? ?????????? ???????.

[3] — ??? ?????????? ??? ??? ????????? ? ?????? ??????????. ? ?? ????? ??? ????? ???????????? ???? ?????? ???? ????????????? ??????????, ?? MySQL 4.1, ?? PHP 5.0 ?? ????? ?????????? ??????? (?????? ????????? ?? ?????? PHP 5.0.0 — ????. ???????????). ?????, ?????????????? ????? ????????????, ??????? ?? ????? ????????? ?????????? ?????????? ?????????? MySQL, ??? ??? ??????????????.

[4] — ????? ???? «SQL-??????» ????????, ????? ?????? ?????? ? ??????, ????????? ??? ????????? ??????????? ?/??? ????????????? ????????. ?????, ??? ???????, ??? ??????? ?????? ? PHP ??????? ???? «DELETE FROM grades WHERE class_name=»test_$class»». ????????? ????? ???????? ???????? ??? ?????????? $class ? ???????? ??????????? an attacker who can gain control over the value of $class can force unintended deletes to occur by changing the value of $class to something like «oops» or class_name LIKE «%»».

7. ?? ???????

??? ????? (Zak Greant) — ???????????????? ???????? ????????? Open Source, ???????? ? ???????????. ?? ???????? ? MySQL AB ?????????????? ??????????. ??? ???????????? ??? ?????????? PHP ??? ?????? ? MySQL ? ???????? ????????? PHP Functions Essential Reference.

????? ?????? (Georg Richter) — ????????? ?????????? mysqli. ?? ????? ???????????? ?????????? mysql ? ncurses. ?? ???????? ? MySQL AB ??????? ????????????? ? ???????? ?????? Apache Software Foundation.

iphone spy software no jailbreak

?c??????: phpclub.net


Смотрите также:

Tags: , , ,

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]