PHP MySQLFunkcje: mysqli_query, mysqli_connect, mysqli_fetch_array

PHP posiada bogatฤ… kolekcjฤ™ wbudowanych funkcji sล‚uลผฤ…cych do manipulacji MySQL bazy danych.

Funkcja PHP mysqli_connect

Funkcja PHP mysql connect sล‚uลผy do ล‚ฤ…czenia siฤ™ z MySQL Serwer bazy danych.

Ma nastฤ™pujฤ…cฤ… skล‚adniฤ™.

<?php;
$db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password);
?>

TUTAJ,

  • โ€ž$db_handleโ€ to zmienna zasobu poล‚ฤ…czenia z bazฤ… danych.
  • โ€žmysqli_connect(โ€ฆ)โ€ to funkcja sล‚uลผฤ…ca do ล‚ฤ…czenia siฤ™ z bazฤ… danych PHP
  • โ€ž$server_nameโ€ to nazwa lub adres IP serwera hostingowego MySQL serwer.
  • โ€ž$user_nameโ€ to prawidล‚owa nazwa uลผytkownika w MySQL serwer.
  • โ€ž$hasล‚oโ€ to prawidล‚owe hasล‚o powiฤ…zane z nazwฤ… uลผytkownika w MySQL serwer.

Funkcja PHP mysqli_select_db

Funkcja mysqli_select_db sล‚uลผy do wybierania bazy danych.

Ma nastฤ™pujฤ…cฤ… skล‚adniฤ™.

<?php
mysqli_select_db($db_handle,$database_name);
?>

TUTAJ,

  • โ€žmysqli_select_db(โ€ฆ)โ€ to funkcja wyboru bazy danych, ktรณra zwraca wartoล›ฤ‡ true lub false
  • โ€ž$database_nameโ€ to nazwa bazy danych
  • โ€ž$link_identifierโ€ jest opcjonalne, sล‚uลผy do przekazywania ล‚ฤ…cza do poล‚ฤ…czenia z serwerem

Funkcja PHP mysqli_query

Funkcja mysqli_query sล‚uลผy do wykonywania SQL zapytania.

Funkcja ta moลผe byฤ‡ uลผywana do wykonywania nastฤ™pujฤ…cych typรณw zapytaล„:

  • wstawka
  • Wybierz
  • Aktualizacja
  • usunฤ…ฤ‡

Ma nastฤ™pujฤ…cฤ… skล‚adniฤ™.

<?php
mysqli_query($db_handle,$query) ;
?>

TUTAJ,

  • โ€žmysqli_query(โ€ฆ)โ€ to funkcja wykonujฤ…ca zapytania SQL.
  • โ€ž$queryโ€ to zapytanie SQL, ktรณre ma zostaฤ‡ wykonane
  • โ€ž$link_identifierโ€ jest opcjonalne, moลผna go uลผyฤ‡ do przekazania ล‚ฤ…cza do poล‚ฤ…czenia z serwerem

Funkcja PHP mysqli_num_rows

Funkcja mysqli_num_rows sล‚uลผy do uzyskania liczby wierszy zwrรณconych przez zapytanie SELECT.

Ma nastฤ™pujฤ…cฤ… skล‚adniฤ™.

<?php
mysqli_num_rows($result);
?>

TUTAJ,

  • โ€žmysqli_num_rows(โ€ฆ)โ€ to funkcja zliczajฤ…ca wiersze
  • โ€ž$resultโ€ to zestaw wynikรณw mysqli_query

Funkcja PHP mysqli_fetch_array

Funkcja mysqli_fetch_array sล‚uลผy do pobierania tablic wierszy z zestawu wynikรณw zapytania.

Ma nastฤ™pujฤ…cฤ… skล‚adniฤ™.

<?php
mysqli_fetch_array($result);
?>

TUTAJ,

  • โ€žmysqli_fetch_array(โ€ฆ)โ€ to funkcja sล‚uลผฤ…ca do pobierania tablic wierszy
  • โ€œ$resultโ€ to wynik zwrรณcony przez funkcjฤ™ mysqli_query.

Funkcja PHP mysqli_close

Funkcja mysqli_close sล‚uลผy do zamykania otwartego poล‚ฤ…czenia z bazฤ… danych.

Ma nastฤ™pujฤ…cฤ… skล‚adniฤ™.

<?php
mysqli_close($db_handle);
?>

TUTAJ,

  • โ€žmysqli_close(โ€ฆ)โ€ to funkcja PHP
  • โ€ž$link_identifierโ€ jest opcjonalne, sล‚uลผy do przekazywania zasobu poล‚ฤ…czenia z serwerem

Przyjrzyjmy siฤ™ praktycznym przykล‚adom wykorzystujฤ…cym te funkcje.

Tworzenie MySQL baza danych W tym samouczku zakล‚ada siฤ™, ลผe posiadasz wiedzฤ™ nt MySQL i SQL, jeล›li te terminy nie sฤ… Ci znane, zapoznaj siฤ™ z naszymi MySQL i tutoriale SQL.

Stworzymy prostฤ… bazฤ™ danych o nazwie my_personal_contacts zawierajฤ…cฤ… tylko jednฤ… tabelฤ™.

Poniลผej przedstawiono kroki tworzenia bazy danych i tabeli.

  • Poล‚ฤ…cz siฤ™ MySQL za pomocฤ… ulubionego narzฤ™dzia dostฤ™pu, takiego jak MySQL workbench, phpMyAdmin itp.
  • Utwรณrz bazฤ™ danych o nazwie moja_osoba_kontakty
  • Wykonaj skrypt pokazany poniลผej, aby utworzyฤ‡ tabelฤ™ i wstawiฤ‡ fikcyjne dane
<?php
CREATE TABLE IF NOT EXISTS `my_contacts` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `full_names` varchar(255) NOT NULL,

  `gender` varchar(6) NOT NULL,

  `contact_no` varchar(75) NOT NULL,

  `email` varchar(255) NOT NULL,

  `city` varchar(255) NOT NULL,

  `country` varchar(255) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES

(1, 'Zeus', 'Male', '111', 'zeus @ olympus . mt . co', 'Agos', 'Greece'),

(2, 'Anthena', 'Female', '123', 'anthena @ olympus . mt . co', 'Athens', 'Greece'),

(3, 'Jupiter', 'Male', '783', 'jupiter @ planet . pt . co', 'Rome', 'Italy'),

(4, 'Venus', 'Female', '987', 'venus @ planet . pt . co', 'Mars', 'Italy');
?>

Mamy teraz skonfigurowanฤ… bazฤ™ danych, ktรณrฤ… bฤ™dziemy manipulowaฤ‡ z poziomu PHP.

Odczyt rekordรณw z bazy danych Stworzymy teraz program, ktรณry wydrukuje rekordy z bazy danych.

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server if (!$dbh)     
    
	die("Unable to connect to MySQL: " . mysqli_error());
    
	//if connection failed output error message 
    if (!mysqli_select_db($dbh,'my_personal_contacts'))     
    
	die("Unable to select database: " . mysqli_error()); 
    //if selection fails output error message 
    
	$sql_stmt = "SELECT * FROM my_contacts"; 
    //SQL select query 
    
     $result = mysqli_query($dbh,$sql_stmt);
     //execute SQL statement 
     
	if (!$result)     
		die("Database access failed: " . mysqli_error()); 
    	//output error message if query execution failed 
        
		$rows = mysqli_num_rows($result); 
   		// get number of rows returned 
    
	if ($rows) {     
    
	while ($row = mysqli_fetch_array($result)) {         
		echo 'ID: ' . $row['id'] . '<br>';         
		echo 'Full Names: ' . $row['full_names'] . '<br>';        
		echo 'Gender: ' . $row['gender'] . '<br>';         
		echo 'Contact No: ' . $row['contact_no'] . '<br>';         
		echo 'Email: ' . $row['email'] . '<br>';         
		echo 'City: ' . $row['city'] . '<br>';         
		echo 'Country: ' . $row['country'] . '<br><br>';     
	} 
} 
mysqli_close($dbh); //close the database connection 
?>

Wykonanie powyลผszego kodu zwraca wyniki pokazane na poniลผszym diagramie

PHP: MySQL Funkcje

Wstawianie nowych rekordรณw

Przyjrzyjmy siฤ™ teraz przykล‚adowi, ktรณry dodaje nowy rekord do naszej tabeli. poniลผszy kod przedstawia implementacjฤ™.

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server if (!$dbh)     
    
	die("Unable to connect to MySQL: " . mysqli_error()); 
	//if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysql_error()); 
	//if selection fails output error message 
    
	$sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"; 
	$sql_stmt .= " VALUES('Poseidon','Mail','541',' poseidon @ sea . oc ','Troy','Ithaca')"; 
    
	$result = mysqli_query($dbh,$sql_stmt); //execute SQL statement 
    
	if (!$result)     
		die("Adding record failed: " . mysqli_error()); 
		//output error message if query execution failed echo "Poseidon has been successfully added to your contacts list";
        
 mysqli_close($dbh); //close the database connection 
?>

Wykonanie powyลผszego kodu spowoduje wyล›wietlenie komunikatu โ€žPosejdon zostaล‚ pomyล›lnie dodany do Twojej listy kontaktรณwโ€. Wrรณฤ‡ do przykล‚adowego zapytania wybierajฤ…cego i ponownie pobierz swoje kontakty.

Sprawdลบ, czy Posejdon zostaล‚ dodany do Twojej listy.

Aktualizowanie rekordรณw Przyjrzyjmy siฤ™ teraz przykล‚adowi, ktรณry aktualizuje rekord w bazie danych.

Zaล‚รณลผmy, ลผe Posejdon zmieniล‚ swรณj numer kontaktowy i adres e-mail.

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server 
    
	if (!$dbh)    
	die("Unable to connect to MySQL: " . mysqli_error()); 
    //if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysql_error()); 
	//if selection fails output error message 
    
	$sql_stmt = "UPDATE `my_contacts` SET `contact_no` = '785',`email` = ' poseidon @ ocean . oc ';
	//SQL select query $sql_stmt .= " WHERE `id` = 5"; 
    
	$result = mysqli_query($dbh,$sql_stmt); 
	//execute SQL statement if (!$result)     
    
	die("Deleting record failed: " . mysqli_error()); 
	//output error message if query execution failed 
    
	echo "ID number 5 has been successfully updated"; 
mysqli_close($dbh); //close the database connection 
?>

Usuwanie rekordรณw

Przyjrzyjmy siฤ™ teraz przykล‚adowi usuwania rekordรณw z bazy danych. Zaล‚รณลผmy, ลผe Venus ma wobec nas zakaz zbliลผania siฤ™ i musimy usunฤ…ฤ‡ jej dane kontaktowe z naszych baza danych.

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server
    
	if (!$dbh)     
	die("Unable to connect to MySQL: " . mysqli_error()); 
	//if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysqli_error()); 
	//if selection failes output error message $id = 4; 
	//Venus's ID in the database 
    
	$sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; 
	//SQL Delete query 
    
	$result = mysqli_query($dbh,$sql_stmt); 
	//execute SQL statement 
    
	if (!$result)     
	die("Deleting record failed: " . mysqli_error());
	//output error message if query execution failed 
    
	echo "ID number $id has been successfully deleted"; 
mysqli_close($dbh); //close the database connection 
?>

Obiekt dostฤ™pu do danych PHP PDO

PDO to klasa, ktรณra pozwala nam manipulowaฤ‡ rรณลผnymi silnikami baz danych, takimi jak MySQL, PostGres, MS SQL Server itp.

Poniลผszy kod przedstawia sposรณb dostฤ™pu do bazy danych z wykorzystaniem obiektu PDO.

Uwaga: poniลผszy kod zakล‚ada znajomoล›ฤ‡ jฤ™zyka SQL, tablic, obsล‚ugi wyjฤ…tkรณw i pฤ™tli foreach.

<?php 
	try {    
	$pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody');     
    
	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);     
	$pdo->exec('SET NAMES "utf8"');     
    
	$sql_stmt = "SELECT * FROM `my_contacts`";     
	$result = $pdo->query($sql_stmt);     
	$result->setFetchMode(PDO::FETCH_ASSOC);     
	$data = array();     
	foreach ($result as $row) {         
	$data[] = $row;     
  }     
print_r($data); 
} 
catch (PDOException $e) {     
	echo $e->getMessage(); 
} 
?>

TUTAJ,

  • โ€žtry{โ€ฆcatchโ€ฆ}โ€ to blok obsล‚ugi wyjฤ…tkรณw
  • โ€ž$pdo = new PDO(โ€œmysqlโ€ฆโ€ tworzy wystฤ…pienie obiektu PDO i przekazuje sterowniki bazy danych, nazwฤ™ serwera i bazy danych, identyfikator uลผytkownika i hasล‚o.
  • โ€ž$pdo->setAttโ€ฆโ€ ustawia atrybuty trybu bล‚ฤ™du PDO i trybu wyjฤ…tku
  • โ€ž$pdo->exec('SET NAโ€ฆโ€ ustawia format kodowania

ODBC ODBC to skrรณt od Open Database Connectivity. Ma nastฤ™pujฤ…cฤ… podstawowฤ… skล‚adniฤ™.

<?php $conn = odbc_connect($dsn, $user_name, $password); ?>

TUTAJ,

  • โ€žodbc_connectโ€ to wbudowana funkcja PHP
  • โ€ž$dsnโ€ to nazwa ลบrรณdล‚a danych ODBC.
  • โ€ž$user_nameโ€ jest opcjonalne i uลผywane jako nazwa uลผytkownika ODBC
  • โ€ž$hasล‚oโ€ jest opcjonalne, sล‚uลผy do hasล‚a ODBC

Zastosowany przykล‚ad zakล‚ada, ลผe โ€‹โ€‹ty;

  • Uลผywajฤ… Windows OS
  • Utworzyล‚eล› ล‚ฤ…cze ODBC do Northwind Microsoft Dostฤ™p do bazy danych o nazwie Northwind

Poniลผej znajduje siฤ™ kod implementacji dostฤ™pu do danych ODBC

<?php 
	$dbh = odbc_connect('northwind', '', ''); 
	if (!$dbh) {     
	exit("Connection Failed: " . $dbh); 
} 
	$sql_stmt = "SELECT * FROM customers"; 
	$result = odbc_exec($dbh, $sql_stmt); 
	if (!$result) {     
	exit("Error access records"); 
} 
	while (odbc_fetch_row($result)) {     
	$company_name = odbc_result($result, "CompanyName");    
	$contact_name = odbc_result($result, "ContactName");     
	echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>";
} 
odbc_close($dbh); 
?>

Podsumowanie

  • MySQL to narzฤ™dzie do zarzฤ…dzania relacyjnymi bazami danych o otwartym kodzie ลบrรณdล‚owym, dostฤ™pne na wiฤ™kszoล›ci serwerรณw hostingowych
  • PHP posiada bogatฤ… kolekcjฤ™ wbudowanych funkcji, ktรณre upraszczajฤ… pracฤ™ MySQL
  • PDO to skrรณt od PHP Data Object; sล‚uลผy do ล‚ฤ…czenia siฤ™ z rรณลผnymi silnikami baz danych przy uลผyciu tego samego obiektu
  • PHP uลผywa funkcji odbc_connect do manipulowania bazami danych poprzez ODBC

Podsumuj ten post nastฤ™pujฤ…co: