Základy MySQL – část. 2 ( Spojení PHP a MySQL )

 2012-06-14 00:00:00
 Dmitry Burobin

V tomto článku spojíme MySQL s PHP. Ukážu Vám jak pracovat s MySQL databázi pomocí PHP s příkazy, které jsem Vám ukázal v prvním článku o MySQL. Taktéž spojení s databází.

Série článků:
1) Základy MySQL - část 1.
2) Základy MySQL – část. 2 ( Spojení PHP a MySQL )

Spojení

Zaprvé vytvoříme tabulku pokus v databázi test:

CREATE TABLE `pokus`(                      
`id` INT( 5 ) NOT NULL AUTO_INCREMENT,    
`name` VARCHAR ( 255 ) NOT NULL,          
`zprava` TEXT NOT NULL,                   
PRIMARY KEY(`id`)                          
)ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci

Druhá věc, kterou potřebujeme udělat pro práci s databází je připojit se k ní. K navázání spojení použíjeme funkce mysql_connect a mysql_select_db. Vytvořime nový soubor a uložíme ho jako config.inc.php, bude mít následující obsah:

<?php
$DBSERVER 'localhost'//server, který bude použít pro navázáníspojení s DB
$DBUSER 'root'//Váš mysql login, nejspíš je stejný jako u mě pro localhost, tudiž root
$DBPASS '****'//heslo, které jste zadavali při instalaci MySQL

$DB 'test'//databáze, s kterou budeme pracovat

//navazení spojení pomoci mysql_connect 
$link mysql_connect($DBSERVER$DBUSER$DBPASS)  or die("Could not connect: " mysql_error());
//vybírame databázi
mysql_select_db($DB$link) or die ('Can\'t use test : ' mysql_error());
//řekněme MySQL, že všechná data jsou ve formatu UTF-8
mysql_query("SET NAMES UTF8");
?>

Vložíme do tabulky nějaká data ( INSERT )

Pro operace s tabulkama se používa funkce mysql_query(). Teď vložíme do tabulky data, s kterýma budeme pracovat. Vytvořte si nový soubor ve stejné složce a uložte ho třeba jako index.php.

<?php
//Zaprvé načteme do něj náš soubor s připojením k DB. Použávam rád funkci require_once, 
//ale můžete taký použít include, require a další funkce.
require_once ("config.inc.php"); 

//Vložíme nějaka data: Pavel, Pavel_message a Lenka, Lenka_message
$query "INSERT INTO `pokus`(`name`,`zprava`) VALUES
 ('Pavel','Pavel_message'), 
('Lenka','Lenka_message')"
;
$result mysql_query($query);
if(!
$result) echo  mysql_error() . " - " mysql_errno();
else echo 
'Data jsou uspesne vlozena do tabulky';
?>
mělo by se Vám vyvést na obrazovku, že data jsou úspěšně vložena do tabulky.

Vybírání dat ( SELECT )

Teď vypíšeme obsah naše tabulky na obrazovku, k tomu abysme prošli celou tabulkou použíjeme funkci mysql_fetch_assoc() a cyklus while. Do stejného souboru index.php ( dále budeme pracovat jen s index.php ) doplňime:

<?php
//vyber všechno z tabulky pokus a seřaď podle id
$query_sel "SELECT * FROM `pokus` ORDER BY `id`";
//dalším řádkem řekněme, že $query_sel je MySQL příkazem.
//Jde to napsat i do jednoho řádku, ale já preferuji tuhle metodu 
$result_sel mysql_query($query_sel);
//jestli příkaz nebyl vykonán
if(!$result_sel
    {
//pak se vypiše chybné hlášení
        
echo  mysql_error() . " - " mysql_errno();
    }
//v případě, že chyba nenastla
    
else
    {
//projdeme celou tabulku pomoci cyklusu while a 
//každý řádek tabulky a vrátime asociativní pole 
        
while($row mysql_fetch_assoc($result_sel))
        {
//dopsal jsem značku p jen proto, aby se každý záznam vypisoval
//do samostatného bloku 
            
echo "<p>";
//konstrukce volání dat z tabulky je poměrně jednoduchá řádek['pole']
            
echo "Jmeno: " $row['name'] . "<br>";
            echo 
"Zprava: " $row['zprava'];
            echo 
"</p>";
        }
    }
?>

Výsledek by měl být následující:

Jmeno: Pavel
Zprava: Pavel_message

Jmeno: Lenka
Zprava: Lenka_message

Uděláme jěště jeden příklad, jelikož při každém načtení stránky se nám vkládájí stejná data do tabulky, projdeme celou tabulkou a zjístime zda v ní už jsou záznamy se jmény Pavel a Lenka. Jestli jsou tak už je do tabulky vkládát nebudeme a vyvedeme hlášení. Pro realizaci použíjeme ještě jednu funkci mysql_num_rows(), která vráci počet dotčených řádků. Najdeme tuhle část kódu:

<?php
//Vložíme nějaka data: Pavel, Pavel_message a Lenka, Lenka_message
$query "INSERT INTO `pokus`(`name`,`zprava`) VALUES
 ('Pavel','Pavel_message'), 
('Lenka','Lenka_message')"
;
$result mysql_query($query);
if(!
$result) echo  mysql_error() . " - " mysql_errno();
else echo 
'Data jsou uspesne vlozena do tabulky';
?>
a modifikujeme ji:
<?php
//Vyber všechno z tabulky pokus se jménem buď Pavel nebo Lenka 
$q_name "SELECT * FROM `pokus` WHERE `name` IN('Pavel','Lenka')";
$r_name mysql_query($q_name);
if(!
$r_name)
{
     echo  
mysql_error() . " - " mysql_errno();
}else{
//jestli počet dotčených řádků je nula jinými slovy
//jestli v tabulce není záznam u kterého pole name se rovná
//Pavel nebo Lenka, pak vložíme tyto záznamy
     
if(mysql_num_rows($r_name)==0)
     {
         
//Vložíme nějaka data: Pavel, Pavel_message a Lenka, Lenka_message
$query "INSERT INTO `pokus`(`name`,`zprava`) VALUES ('Pavel','Pavel_message'), ('Lenka','Lenka_message'), ('dsf','Lenkasdfmessage')";
$result mysql_query($query);
if(!
$result) echo  mysql_error() . " - " mysql_errno();
else echo 
'Data uspesne vlozena do tabulky';
//v případě, že už jsou vyvedemé hlášení
     
} else { echo 'Zaznam s timto jmenem uz je v tabulce'; }
}
?>
abyste si to mohli vyzkoušet tak vložte někam do souboru tento řádek:
<?php
//tento příkaz vyprázdní tabulku pokus
$q mysql_query("TRUNCATE TABLE `pokus`");
?>
nebo to můžete udělat ručně pomocí phpmyadmin.

Upravování dat ( UPDATE ) a odstraňování dat ( DELETE )

Ukážu Vám jenom příklady, protože k tomuto není třeba něco psat =)

<?php
/*Upravovani dat*/

$query_update "UPDATE `pokus` SET `zprava`='nova_zprava' WHERE `name`='Pavel'";
$result_update mysql_query($query_update);
//jestli příkaz nebyl vykonán
if(!$result_update
    {
//pak se vypiše chybné hlášení
        
echo  mysql_error() . " - " mysql_errno();
    }
//v případě, že chyba nenastla
    
else
    {
        echo 
"Zmena probehla uspesne";
    }
    
?>
<?php
/*Odstranovani dat*/

$query_delete "DELETE FROM `pokus` WHERE `name`='Pavel'";
$result_delete mysql_query($query_delete);
//jestli příkaz nebyl vykonán
if(!$result_delete
    {
//pak se vypiše chybné hlášení
        
echo  mysql_error() . " - " mysql_errno();
    }
//v případě, že chyba nenastla
    
else
    {
        echo 
"Zaznam vymazan uspesne";
    }
?>

Konfigurační soubor a Index.php: archiv
Systém Orphus
Napište komentář.
Celkem komenrářů(48)
Haroreab - 2017-12-04  15:31:09
 Viagra 100mg Tablets Retail Price Que Es Cialis Cialis Cialis Viagra Efficacite [url=http://cheapvia100mg.com]generic viagra[/url] Levitra Solubile Four Co
ers Pharmacy New Zealand Order Synthroid No Prescription
Haroreab - 2017-12-04  15:31:08
 Viagra 100mg Tablets Retail Price Que Es Cialis Cialis Cialis Viagra Efficacite [url=http://cheapvia100mg.com]generic viagra[/url] Levitra Solubile Four Co
ers Pharmacy New Zealand Order Synthroid No Prescription
Haroreab - 2017-12-04  15:31:07
 Viagra 100mg Tablets Retail Price Que Es Cialis Cialis Cialis Viagra Efficacite [url=http://cheapvia100mg.com]generic viagra[/url] Levitra Solubile Four Co
ers Pharmacy New Zealand Order Synthroid No Prescription
Haroreab - 2017-12-04  15:31:06
 Viagra 100mg Tablets Retail Price Que Es Cialis Cialis Cialis Viagra Efficacite [url=http://cheapvia100mg.com]generic viagra[/url] Levitra Solubile Four Co
ers Pharmacy New Zealand Order Synthroid No Prescription
Jeffpoonia - 2017-11-30  03:31:55
 Hot Flashes And Keflex Prescription Drugs Amphetamine [url=http://costofcial.com ]online pharmacy[/url] Cialis Esiste Il Generico
Jeffpoonia - 2017-11-30  03:31:54
 Hot Flashes And Keflex Prescription Drugs Amphetamine [url=http://costofcial.com ]online pharmacy[/url] Cialis Esiste Il Generico
Jeffpoonia - 2017-11-30  03:31:52
 Hot Flashes And Keflex Prescription Drugs Amphetamine [url=http://costofcial.com ]online pharmacy[/url] Cialis Esiste Il Generico
Jeffpoonia - 2017-11-30  03:31:51
 Hot Flashes And Keflex Prescription Drugs Amphetamine [url=http://costofcial.com ]online pharmacy[/url] Cialis Esiste Il Generico
Haroreab - 2017-11-22  07:55:12
 Asthma Inhalers Over The Counter Naturliche Levitra Cialis 5 Mg Benefici [url=http://levibuying.com]levitra[/url] Levitra Stripes Bestellen Abilify Via Mail Order Levitra Sirve Para La Mujer
Haroreab - 2017-11-21  14:44:53
 Macrobid Antibiotic In Inte
et Tablet Ed Meds Ove
ight Delivery Doxycycline On Line [url=http://levibuyus.com]buy levitra on line[/url] Viagra Y Cialis
Haroreab - 2017-11-21  14:44:52
 Macrobid Antibiotic In Inte
et Tablet Ed Meds Ove
ight Delivery Doxycycline On Line [url=http://levibuyus.com]buy levitra on line[/url] Viagra Y Cialis
Haroreab - 2017-11-21  14:44:51
 Macrobid Antibiotic In Inte
et Tablet Ed Meds Ove
ight Delivery Doxycycline On Line [url=http://levibuyus.com]buy levitra on line[/url] Viagra Y Cialis
Haroreab - 2017-11-21  14:44:50
 Macrobid Antibiotic In Inte
et Tablet Ed Meds Ove
ight Delivery Doxycycline On Line [url=http://levibuyus.com]buy levitra on line[/url] Viagra Y Cialis
Haroreab - 2017-11-05  01:48:26
 Dutasteride For Sale [url=http://costofcial.com]online pharmacy[/url] Como Comprar Cialis Sin Receta
Haroreab - 2017-11-05  01:48:25
 Dutasteride For Sale [url=http://costofcial.com]online pharmacy[/url] Como Comprar Cialis Sin Receta
Haroreab - 2017-11-05  01:48:24
 Dutasteride For Sale [url=http://costofcial.com]online pharmacy[/url] Como Comprar Cialis Sin Receta
Haroreab - 2017-11-05  01:48:23
 Dutasteride For Sale [url=http://costofcial.com]online pharmacy[/url] Como Comprar Cialis Sin Receta
Haroreab - 2017-10-28  20:44:11
 Keflex Doseage Strep Throat Doxazosin No Prescription Buy Valtrex Hong Kong [url=http://cheaplevi.com]levitra lowest price[/url] Zithromax Classification Lasix Side Effect Priligy Realmente Funciona
Haroreab - 2017-10-24  20:27:30
 Dovobet Without Prescription Azithromycin 500mg Next Day Delivery Septrin [url=http://ordercheapvia.com]online pharmacy[/url] Generic Cheap Dutasteride 0.5mg Baldness C.O.D. Rivenditori Levitra
Haroreab - 2017-10-24  20:27:29
 Dovobet Without Prescription Azithromycin 500mg Next Day Delivery Septrin [url=http://ordercheapvia.com]online pharmacy[/url] Generic Cheap Dutasteride 0.5mg Baldness C.O.D. Rivenditori Levitra
[1] [2] [3] 
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.