Php mysql-voorbeelden. Basisprincipes van het werken met MySQL in PHP. Het transactiemechanisme gebruiken

In dit artikel zullen we kijken naar manieren om toegang te krijgen tot MySQL-databasetabellen met behulp van de SQL-querytaal. SQL is een acroniem dat ‘gestructureerde querytaal’ wordt genoemd.
In de PHP-taal zijn hiervoor een aantal functies met het voorvoegsel "mysql" beschikbaar. We hebben er niet veel nodig om verzoeken te verwerken. Een functie zonder welke het uitvoeren van SQL-query's in PHP simpelweg onmogelijk zou zijn:

Bron mysql_query(query)

Deze functie verzendt een aanvraag naar de database en retourneert de resource-ID als de aanvraag succesvol is.
Om verbinding te maken met de MySQL-database, moet u de volgende reeks uitvoeren:

$host="lokalehost"; // hostnaam (te bevestigen bij de provider) $database="db_name"; // naam van de database die u moet aanmaken $user="user_name"; // gebruikersnaam opgegeven door u, of gedefinieerd door de provider $pswd="your_pass"; // het door u opgegeven wachtwoord $dbh = mysql_connect($host, $user, $pswd) or die("Kan geen verbinding maken met MySQL."); mysql_select_db($database) or die("Ik kan geen verbinding maken met de database.");

Dus mysql_connect()- een functie om verbinding te maken met een MySQL-server op uw hosting.
A mysql_select_db() selecteert een database op de server waarmee verbinding moet worden gemaakt.
Met andere woorden: we maken verbinding met de server, selecteren een database en gaan aan de slag.
De functie die() wordt aangeroepen als er een fout optreedt en geeft het door u opgegeven bericht weer in het browservenster.
Gebruik de functie om het werken met databases te beëindigen:

Mysql_close($dbh);

Hier $dbh- descriptor die door de functie werd geretourneerd bij verbinding mysql_connect.
Nu we de eerste beoordeling hebben afgerond, gaan we kijken naar de daadwerkelijke SQL-query's.
Om dit te doen, moet u eerst een database met een specifieke naam maken. En maak er een tabel in, ook met een specifieke naam. In onze voorbeelden verwijzen we naar de tabel mijn_sql_tabel. Om deze tabel te maken, voeren we de volgende query uit in phpmyadmin van onze localhost:

CREATE TABLE `my_sql_table` (`id` INT NOT NULL , // identificatie van toekomstige tabelrecords `firstname` VARCHAR(50) NOT NULL , // tekstveld VARCHAR `achternaam` VARCHAR(50) NOT NULL , // maximale lengte 50 tekens PRIMAIRE SLEUTEL (`id`) // primaire sleutel - identificatie-ID);

Dus de tabel is gemaakt. Laten we het eerste verzoek uitvoeren, dat we onmiddellijk zullen formatteren in de vorm van PHP-code:

\n"; echo "Naam: ".$row["voornaam"]."
\n"; echo "Achternaam: ".$row["achternaam"]."


\n"; ) ?>

Laten we de PHP-code van het bestand analyseren eerstesql.php. Laten we beginnen met de eigenlijke query naar de databasetabellen.

$query = "SELECT * UIT `mijn_sql_tabel`";

Deze query kan als volgt worden ontcijferd: selecteer uit tabel mijn_sql_tabel DB alle records uit alle velden. Deze kant op tekenen * na het woord SELECT betekent “selecteer absoluut alles.” Het verzoek is dus aangemaakt. Nu moet je het uitvoeren:

$res = mysql_query($query);

Als het verzoek succesvol is, wordt de function mysql_query() zal ons de resource-ID retourneren $res.
We moeten het als parameter aan de functie doorgeven mysql_fetch_array(). De naam van deze functie spreekt voor zich. Die. het vormt en voert een array uit op basis van een voorbeeld uit de databasetabel. In het geval van onze tabel zal de array bestaan ​​uit een aantal elementen dat gelijk is aan het aantal records (rijen) in de tabel en waarden bevatten ID, voornaam, achternaam voor elke rij van de tabel. Vandaar de volgende code:

While($row = mysql_fetch_array($res)) ( echo "Nummer: ".$row["id"]."
\n"; echo "Naam:".$row["voornaam"]."
\n"; echo "Achternaam:".$row["achternaam"]."


\N"; )

kan als volgt worden becommentarieerd: terwijl de door ons geïntroduceerde $row-variabele resultaten ontvangt die niet nul zijn van de functie mysql_fetch_row u moet de veldwaarden naar de browser uitvoeren $row["id"], $row["voornaam"], $row["achternaam"] door te gebruiken echo.
Als het verzoek als volgt wordt uitgevoerd:

$query = "SELECTEER voornaam UIT `my_sql_table`";

dan betekent dit dat uit alle rijen alleen de waarden van het voornaamveld worden geselecteerd.
Daarom moet de vorige code worden herschreven als:

$res = mysql_query($query); while($row = mysql_fetch_array($res)) ( echo "Naam:".$row["voornaam"]."
\N"; )

Als u tabelrijen met een specifieke waarde wilt selecteren Identiteitskaart waar de achternaam (achternaam) zal zijn Petrov, dan wordt het verzoek als volgt herschreven:

$query = "SELECT id FROM `my_sql_table` waarbij achternaam = "Petrov"";

Maar als u de achternaam wilt weten van de persoon met het nummer, bijvoorbeeld 5, dan ziet het verzoek er als volgt uit:

$query = "SELECTEER achternaam VAN `my_sql_table` waarbij id=5";

In dit geval weet u dat het resultaat van de query slechts één rij uit de tabel zal zijn. Die. het heeft geen zin om een ​​lus te organiseren met behulp van terwijl. En de aanvraagverwerking zal als volgt zijn

$res = mysql_query($query); $row = mysql_fetch_row($res); echo "De achternaam van de vijfde persoon op de lijst is ".$row."\n";

Hier hebben we in plaats van mysql_fetch_array() gebruikt mysql_fetch_row(). Die. haal de waarde op van een veld (of velden) van een specifieke rij. Omdat we één veld hadden: achternaam, kunnen we naar het enige element van de array $row verwijzen als $rij;.

Laten we dus eens kijken naar de meest typische voorbeelden van MySQL-query's. We zullen de beoordeling uitvoeren op basis van de tabel mijn_sql_tabel:
1. Voeg daarna een veld middle_name (middelste naam) toe aan de tabel my_sql_table achternaam:

$query = "ALTER TABLE `my_sql_table` `middelste_naam` TOEVOEGEN
VARCHAR(50) NIET NULL NA `achternaam`";

2. Laten we nu het achternaamveld verwijderen uit de tabel my_sql_table:

$query = "ALTER TABLE `mijn_sql_table` DROP `achternaam`";

3. Verwijder records uit de my_sql_table tabel met de achternaam Sidorov:

$query = "VERWIJDER UIT `mijn_sql_tabel` waarbij achternaam = "Sidorov"";

4. Naast gelijktekens, ook “groter dan” of “kleiner dan”, bestaat er in de MySQL-querytaal het concept “ lijkt op". Laten we records selecteren uit de tabel my_sql_table waar de achternaam " bevat dor" :

$query = "SELECT * FROM `my_sql_table` met achternaam zoals "%dor%"";

Hier de aanwezigheid" % " aan het begin en einde van "dor" en betekent dat de zoekopdracht precies naar "dor" zoekt, en het maakt niet uit of dit aan het begin, einde of midden van de achternaam staat. Bekijk het volgende voorbeeld
5. Selecteer records uit de tabel my_sql_table met een achternaam die begint met P. Let op de locatie" % ":

$query = "SELECT * FROM `my_sql_table` met achternaam zoals "P%"";

6. Bereken de maximale waarde Identiteitskaart:

$query = "SELECT MAX(id) FROM `mijn_sql_table`";

7. Bereken het aantal velden in my_sql_table met een achternaam die begint met P.

$query = "SELECT COUNT(*) FROM `my_sql_table` met achternaam zoals "P%"";

8. De tabel my_sql_table verwijderen:

$query = "DROP TABLE `mijn_sql_table`";

Voor query's 1-3 in PHP voert u eenvoudigweg de query uit:

Mysql_query($query);

We hebben gekeken naar de meest typische voorbeelden van verzoeken. Ik geloof dat je met hun hulp, door de elementaire logica te volgen, complexere queries kunt uitvoeren op de MySQL-databasetabellen die je hebt gemaakt.




Als u nog andere vragen heeft of iets niet duidelijk is, welkom bij ons
4,5K

De tekst maakt gebruik van een vertaling van officiële documentatie gemaakt door de All-Russische Club van Webmasters.

Al het werk met databases komt neer op verbinding maken met de server, een database selecteren, een verzoek verzenden, het verzoek verwerken en de verbinding met de databases verbreken. Laten we dit geheel dus punt voor punt bekijken. Laten we ons voor de duidelijkheid van de hele tekst voorstellen dat er een MySQL-server op de lokale machine is geïnstalleerd. De poort om ermee te werken is standaard. Om verbinding te maken gebruiken we de gebruikersnaam “root” en het wachtwoord “no_one”.

Verbinding

Verbinding met de database wordt gemaakt met behulp van de functie “mysql_connect()”. Er worden drie parameters doorgegeven: servernaam (of servernaam: verbindingspoort), gebruikersnaam en wachtwoord. Als een tweede aanroep naar "mysql_connect()" wordt gedaan met dezelfde argumenten, zal er geen nieuwe verbinding tot stand worden gebracht - in plaats daarvan zal de verbindings-ID van de reeds geopende verbinding worden geretourneerd (dwz het werk zal met dezelfde database worden voortgezet). Als u met slechts één database werkt, hoeft u geen verbindings-ID aan te maken. Zodra het script is uitgevoerd, wordt de verbinding met de server gesloten, tenzij deze expliciet werd gesloten door een eerdere aanroep van "mysql_close()".

Voorbeeld: $connect = mysql_connect('localhost', 'root', 'no_one'); In dit geval is de variabele $connect de verbindings-ID. Werk je met slechts één database, dan wordt de code geschreven zonder identifier: mysql_connect('localhost', 'root', 'no_one');

Een database selecteren

"mysql_select_db" - selecteert een MySQL-database. Dit betekent dat de server niet één database mag bevatten, maar meerdere. Met dit commando selecteren we degene die we nodig hebben (waarop we de rechten hebben). De parameter van deze functie is de naam van de database. De op deze manier geselecteerde database wordt actief en wordt gekoppeld aan een specifieke identificatie. Als de verbindings-ID niet is gedefinieerd, wordt de laatste verbinding met de database gebruikt.

Voorbeeld: mysql_select_bd('test', $connect); - waarbij test de databasenaam is en $connect de verbindingsidentificatie. Als u met slechts één database werkt, wordt de code zonder identifier geschreven: mysql_select_bd('test');

Een verzoek verzenden

mysql_query() verzendt een query naar de database die momenteel actief is op de server en die is gekoppeld aan een specifieke link-ID. Als er geen ID is opgegeven, wordt de laatst geopende verbinding gebruikt. De parameter van deze functie is een string met een SQL-query.

Voorbeeld: $tmp=mysql_query("slect * uit tabel", $connect); - dit commando retourneert de volledige inhoud van de tabeltabel uit de actieve database waarnaar wordt verwezen door de $connect-identifier. Als u met slechts één database werkt, wordt de code geschreven zonder identificatie: $tmp=mysql_query(“slect * from table”);

Het verwerken van de aanvraag

Er zijn verschillende functies voor het verwerken van verzoeken. De keuze voor de ene of de andere methode voor het verwerken van verzoeken hangt af van de programmeerstijl en de taak die moet worden uitgevoerd. Er moet ook rekening mee worden gehouden dat verschillende opties de server op verschillende manieren "laden" (sommige heel erg, andere niet zo veel). Laten we er een paar bekijken.
mysql_fetch_object - retourneert een php-object als verwerkingsresultaat. Deze methode is goed voor degenen die gewend zijn aan objectprogrammering
Voorbeeld: while($result= mysql_fetch_object($tmp)) echo($result->name);

Ik heb mijn database "phptest" genoemd. Nadat u op de knop "Aanmaken" hebt geklikt, wordt u automatisch doorgestuurd naar de database die u heeft aangemaakt.

Maak een tabel in de database

Er is ook niets ingewikkelds aan deze procedure. Laten we een tabel maken waarin we de titel van onze artikelen en de tekst zelf opslaan:

Zoals je misschien gemerkt hebt, heb ik bij het aantal velden het cijfer 3 gezet, waarom? We moeten immers twee velden aanmaken, voor de titel en de tekst. Het punt is dat er een tabel in de database moet staan één extra veld. Waarvoor? Dit veld is een opeenvolgend identificatienummer (dat wil zeggen: we tellen onze rijen in de tabel), dus we krijgen een uniek nummer voor elke rij van de tabel. Dit zal handig zijn voor het vinden van de string die we nodig hebben in de database. Dit veld heet gewoonlijk id en is daarop ingesteld AUTO_VERHOGING(Ik zal je hieronder laten zien waar het wordt tentoongesteld). Met AUTO_INCREMENT kunt u aan elke regel een uniek nummer toekennen, zodat u geen record met hetzelfde nummer in de databasetabel zult vinden!

Nadat u de naam en het aantal velden heeft ingevuld, klikt u op “OK” en wordt u naar de veldaanmaakpagina geleid. Ik moet bekennen dat ik niet echt begrijp wat ik doe bij het maken van velden, maar dat weerhoudt mij er niet van om ermee te werken. Laten we het zo invullen:

En vul de twee velden in die we nodig hebben:

Waarom slechts twee? Omdat het eerste ID-veld automatisch wordt ingevuld vanwege AUTO_INCREMENT. Klik op "OK". Nu kunt u op het tabblad “Overzicht” de regel zien die we in de tabel hebben gemaakt:

Welnu, we hebben geleerd hoe we tabellen en rijen kunnen maken via het phpmyadmin-paneel, dit is al vooruitgang. Trouwens, ik zou willen opmerken dat de interface van dit paneel intuïtief is, je kunt er gemakkelijk op de knoppen drukken en uitzoeken wat er is. Wat

Het is tijd om te leren hoe u rijen in gemaakte tabellen kunt maken, verwijderen en bijwerken met behulp van PHP. Om ervoor te zorgen dat je beter kunt begrijpen wat ik je vertel, zullen we een klein beheerderspaneel voor de site schrijven, en gaandeweg zal ik je vertellen wat en hoe.

Records uit de database uitvoeren

Laten we hiermee beginnen, omdat je bij het maken van een project het proces duidelijk moet zien, en zonder uitvoer is het erg moeilijk om te doen (ik zal met het bestand test.php werken, wees niet verbaasd als je links in de code ziet naar dit bestand). Hoe zullen we ons terugtrekken? Welnu, eerst moeten we verbinding maken met de database, na gebruik van de do while-lus (Learning PHP - Loops) halen we records uit de database. Laten we beginnen

  • Verbinding maken met de database

Hoe wordt de verbinding gemaakt? Aandacht voor syntaxis:

mysql_select_db(Databasenaam, mysql_connect(Server,DB-gebruikersnaam,DB-gebruikerswachtwoord));

De databasenaam, servergebruiker en wachtwoord worden door u aangemaakt of door uw host verstrekt. Met een lokale server als voorbeeld, creëert u zelf enkele gegevens, of gebruikt u reeds aangemaakte gegevens. Dit is hoe de verbindingen met de database die ik heb gemaakt eruit zullen zien:






//VERBINDEN MET DATABASE (DB)

De server, gebruiker en wachtwoord zijn standaard aangemaakt (in dit geval kunnen we zeggen dat bijna alle gegevens door de hoster aan ons worden verstrekt). Uit mijn gegevens heb ik alleen de naam van de database aangegeven. Dit is overigens PHP-code en moet daarom tussen speciale haakjes staan ​​()

  • Gegevensuitvoer

We moeten gegevens uit de paginatabel weergeven. Let op de uitvoersyntaxis:

$result = mysql_query("SELECTEER wat we uit de tabelnaam uit de database halen");

Met de eerste regel kunnen we specificeren welke kolommen we moeten extraheren en uit welke database.

De tweede regel zet alles wat gevonden wordt in een variabele...

AANDACHT Er zijn een paar punten die ik graag wil verduidelijken. Laten we een paar problemen oplossen:

  • We moeten alle velden uit de tabel extraheren.

Hoe alle velden uit de paginatabel extraheren? zoals dit:

$result = mysql_query("SELECT * FROM pagina");
$mijnrow = mysql_fetch_array($result);

Het is je misschien opgevallen dat ik een asterisk (*) achter de SELECT heb gezet. Het sterretje betekent dat ik moet uitpakken alle velden uit de tabel

  • We hoeven slechts één veld uit de tabel te extraheren

Hoe kan ik alleen het tekstveld uit een tabel extraheren? zoals dit:

$result = mysql_query("SELECTEER tekst VAN pagina");
$mijnrow = mysql_fetch_array($result);

Om niet alle velden, maar slechts enkele te extraheren, moet u na SELECT de verplichte velden vermelden, gescheiden door komma's.

  • We moeten velden niet uit de hele tabel extraheren, maar slechts uit één regel

Hoe extraheer ik alle velden uit de eerste regel? We weten dat de eerste regel een id heeft die gelijk is aan één, laten we deze kennis gebruiken:

Na SELECT legde ik uit, gescheiden door komma's, welke velden moesten worden geëxtraheerd, en vervolgens voegde ik een nieuwe regel WHERE toe (wat 'waar' betekent). id is gelijk aan 1. Dus extraheer ik de velden die ik nodig heb uit de regel waar id is gelijk aan één

Laten we beginnen met het maken van de uitvoer van onze artikelen? We zullen alleen de headers weergeven, laten we aan de slag gaan:


$mijnrow = mysql_fetch_array($result);

Doen
{
echo "".$mijn."
";
}

Wat hebben we gedaan? We hebben twee velden uit de tabel gehaald: ID en titel. Vervolgens lanceerden we een do while-lus (Learning PHP - Cycles) en genereerden links met behulp van de gegevens die uit de database waren gehaald. De gegevens worden opgeslagen in de variabele $myrow, deze variabele is een array, de sleutels tot de array zijn de namen van onze velden in de database. Dit is wat er gebeurde:

Kopteksten worden weergegeven. Laten we nu de uitvoer van volledige berichten organiseren wanneer de muis op een link met een koptekst klikt. Om dit in één bestand te doen, voegt u if()()-voorwaarden toe:

//VERBINDEN MET DATABASE (DB)
$nameDB = "phptest";//Databasenaam
$nameSERVER = "localhost";//Server
$nameUSER = "root";//Database-gebruikersnaam
$passUSER = "";//DB-gebruikerswachtwoord
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//VERBINDEN MET DATABASE (DB)

//OUTPUT-HEADERS
if(!isset($_GET["id"]))
{
$result = mysql_query("SELECT id,titel VAN pagina");
$mijnrow = mysql_fetch_array($result);

Doen
{
echo "".$mijn."
";
}
while ($myrow = mysql_fetch_array($result));
}
//OUTPUT-HEADERS

//VOER VOLLEDIGE TEKST UIT
if(isset($_GET["id"]))
{

$mijnrow = mysql_fetch_array($result);

echo $mijnrij;
}
//VOER VOLLEDIGE TEKST UIT
?>

Ik heb twee voorwaarden toegevoegd. We zullen alleen een lijst met koppen zien als de globale variabele $_GET["id"] niet bestaat. We zullen de volledige tekst alleen zien als deze variabele bestaat. In dit geval zullen we slechts één record uit de database weergeven dat we nodig hebben. Dit is wat we hebben:

Nu denk ik dat het tijd is om te leren hoe je nieuwe rijen aan de tabel kunt toevoegen.

Gegevens toevoegen aan de database

Laten we beginnen met toevoegen door een formulier te maken. Hier is een stukje code dat aan het einde van ons bestand moet worden toegevoegd:

//FORMULIER INVOER TOEVOEGEN
if(isset($_GET["toevoegen"]))
{
echo "







";
}
//FORMULIER INVOER TOEVOEGEN

Dit formulier verschijnt alleen als de globale variabele $_GET["add"] bestaat, dus ergens onderaan moet je een link invoegen om een ​​nieuw artikel toe te voegen. De beste manier om dit te doen is in de header-uitvoercode; je kunt ook de voorwaarde voor het uitvoeren van onze headers als volgt bewerken:

//OUTPUT-HEADERS
if(!isset($_GET["id"]) AND !isset($_GET["add"]))
{
$result = mysql_query("SELECT id,titel VAN pagina");
$mijnrow = mysql_fetch_array($result);

Doen
{
echo "".$mijn."
";
}
while ($myrow = mysql_fetch_array($result));

echo "


Bericht toevoegen";
}
//OUTPUT-HEADERS

Ik heb de voorwaarde bewerkt zodat de lijst met headers niet zou verschijnen wanneer het formulier wordt weergegeven. Dit is wat er gebeurde:

$result = mysql_query("INSERT INTO tabelnaam in de database (veld 1 van de database, veld 2 van de database) VALUES ("data 1", "data 2")");

Laten we nu een handler schrijven voor ons mini-beheerderspaneel en u zult alles begrijpen. Hier is een stukje code dat ik direct heb gepost nadat ik verbinding had gemaakt met de database:

// INVOER TOEVOEGEN

{

header("locatie: test.php");
Uitgang;
}
// INVOER TOEVOEGEN

De voorwaarde is de globale variabele $_POST, dat wil zeggen dat als we het formulier hebben ingevuld en op de knop “Post toevoegen” hebben geklikt, onze voorwaarde zal werken. Het titelveld bevat gegevens uit de globale variabele $_POST, en het tekstveld bevat $_POST. Vervolgens zal de regelkop ("location: test.php") werken. Hiermee kunt u de gebruiker doorsturen naar een andere pagina, in dit geval zal deze pagina test.php zijn. En de lijnuitgang; onderbreekt de uitvoering van andere scripts. Dit is wat er gebeurde:

Gegevens in de database bewerken

Om een ​​specifiek record in onze database te kunnen bewerken, moeten we natuurlijk bepalen welk record moet worden bewerkt... Ik stel voor om de bewerkingsknop in de code weer te geven voor het uitvoeren van de volledige tekst, laten we deze bewerken:

//VOER VOLLEDIGE TEKST UIT
if(isset($_GET["id"]))
{
$result = mysql_query("SELECTEER tekst VAN pagina WHERE id="$_GET"");
$mijnrow = mysql_fetch_array($result);

echo $mijnrij;
echo "


Bewerk bericht";
}
//VOER VOLLEDIGE TEKST UIT


if(isset($_GET["edd"]))
{

$mijnrow = mysql_fetch_array($result);

Echo"








";
}
//FORMULIER INVOER BEWERKEN

Ik heb dit stukje code toegevoegd na het formulier voor het toevoegen van records. Dit formulier lijkt bijna op het formulier voor het toevoegen van berichten. Zoals je misschien hebt gemerkt, heb ik de naamattributen opnieuw gemaakt en het waardeattribuut toegevoegd. In dit attribuut plaatste ik de gegevens die ik uit de database haalde. Er is hier ook een onzichtbaar veld. Het is nodig om de record-ID naar de bestandsbehandelaar te sturen.

Laten we nu de voorwaarde corrigeren om ervoor te zorgen dat wanneer dit formulier op het scherm wordt weergegeven, er geen lijst met kopjes is:

//OUTPUT-HEADERS

{
$result = mysql_query("SELECT id,titel VAN pagina");
$mijnrow = mysql_fetch_array($result);

Doen
{
echo "".$mijn."
";
}
while ($myrow = mysql_fetch_array($result));

echo "


Bericht toevoegen";
}
//OUTPUT-HEADERS

Het is tijd om te leren hoe records in de database worden bewerkt. Hier is de syntaxis:

Laten we nu een handler schrijven. Hier is een stukje code dat ik onmiddellijk na de handler heb toegevoegd voor het toevoegen van records:

// INVOER BEWERKEN

{

header("locatie: test.php");
Uitgang;
}
// INVOER BEWERKEN

De voorwaarde laat zien dat de handler alleen wordt uitgevoerd als we op de knop ‘Bewerk bericht’ hebben geklikt. Vervolgens komt het bijwerken van de database. In het titelveld plaatsen we de waarde van de globale variabele $_POST en in het tekstveld - $_POST. We zullen de regel bewerken waarvan de id gelijk is aan de globale variabele $_POST. Vervolgens leiden we de gebruiker terug naar de lijst met headers:

Records uit de database verwijderen

Welnu, het laatste dat we nog moeten bestuderen is verwijdering. Het is eenvoudiger dan alle andere, dus let op de syntaxis:

Om sommige berichten te verwijderen, moet je ergens een link plaatsen waarmee de gebruiker een bericht kan verwijderen... laten we deze link in de uitvoer van de volledige tekst van het bericht plaatsen:

//VOER VOLLEDIGE TEKST UIT
if(isset($_GET["id"]))
{
$result = mysql_query("SELECTEER tekst VAN pagina WHERE id="$_GET"");
$mijnrow = mysql_fetch_array($result);

echo $mijnrij;
echo "


Bewerk bericht";
echo "
Bericht verwijderen";
}
//VOER VOLLEDIGE TEKST UIT

Resultaat van werk

Hier is de volledige code voor het bericht van vandaag:

//VERBINDEN MET DATABASE (DB)
$nameDB = "phptest";//Databasenaam
$nameSERVER = "localhost";//Server
$nameUSER = "root";//Database-gebruikersnaam
$passUSER = "";//DB-gebruikerswachtwoord
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//VERBINDEN MET DATABASE (DB)

// INVOER TOEVOEGEN
if(isset($_POST["titel_post"]) AND isset($_POST["text_post"]))
{
$result = mysql_query("INSERT INTO pagina (titel,tekst) VALUES ("$_POST","$_POST")");
header("locatie: test.php");
Uitgang;
}
// INVOER TOEVOEGEN

// INVOER BEWERKEN
if(isset($_POST["title_post_edd"]) AND isset($_POST["text_post_edd"]))
{
$result = mysql_query("UPDATE pagina SET title="$_POST", text="$_POST" WHERE id="$_POST"");!}
header("locatie: test.php");
Uitgang;
}
// INVOER BEWERKEN

// VERWIJDER INVOER
if(isset($_GET["del"]))
{
$result = mysql_query("DELETE FROM pagina WHERE id="$_GET"");
header("locatie: test.php");
Uitgang;
}
// VERWIJDER INVOER

//OUTPUT-HEADERS
if(!isset($_GET["id"]) AND !isset($_GET["add"]) AND !isset($_GET["edd"]))
{
$result = mysql_query("SELECT id,titel VAN pagina");
$mijnrow = mysql_fetch_array($result);

Doen
{
echo "".$mijn."
";
}
while ($myrow = mysql_fetch_array($result));

echo "


Bericht toevoegen";
}
//OUTPUT-HEADERS

//VOER VOLLEDIGE TEKST UIT
if(isset($_GET["id"]))
{
$result = mysql_query("SELECTEER tekst VAN pagina WHERE id="$_GET"");
$mijnrow = mysql_fetch_array($result);

echo $mijnrij;
echo "


Bewerk bericht";
echo "
Bericht verwijderen";
}
//VOER VOLLEDIGE TEKST UIT

//FORMULIER INVOER TOEVOEGEN
if(isset($_GET["toevoegen"]))
{
echo "







";
}
//FORMULIER INVOER TOEVOEGEN

//FORMULIER INVOER BEWERKEN
if(isset($_GET["edd"]))
{
$result = mysql_query("SELECT * FROM pagina WHERE id="$_GET"");
$mijnrow = mysql_fetch_array($result);

Echo"








";
}
//FORMULIER INVOER BEWERKEN
?>

Conclusie

De stof bleek behoorlijk complex. Maar! Het is je misschien opgevallen dat ik alleen de informatie heb gebruikt die ik eerder heb gegeven. Dit betekent dat je met deze kennis eenvoudige projecten in PHP kunt maken! Als je dit allemaal onder de knie hebt, dan kun je met trots zeggen dat je een beginnende programmeur bent! Welnu, nu kunt u beginnen met het maken van uw eerste cms. Als je vragen hebt, en dat is waarschijnlijk het geval, stel ze dan. Ik zal je op alle mogelijke manieren helpen! Veel succes, dat is alles voor vandaag!

P.S.: Wat is een mdf-bestand? Hoe het te openen? Hoe het te openen? Deze en vele vragen kunnen worden beantwoord op voprosi4ek.ru

Het enige dat ik kan zeggen als aanbeveling voor het gebruik van databases is dat het leven zonder databases simpelweg de dood is!

De database is een straaltje exe-licht in het donkere koninkrijk van gegevensverwerking door een geïnterpreteerd programma. De database brengt wat kopzorgen met zich mee, maar verlicht nog veel meer.

De MySQL-databaseserver werd als voorbeeld genomen (ik geloof dat als je het eenmaal onder de knie hebt, je anderen gemakkelijk onder de knie zult krijgen. Op een dag zal ik erover schrijven, als ik het zelf onder de knie heb :).

Het eerste gesprek zal gaan over PHP-functies die worden gebruikt om met MySQL te werken. Dus laten we beginnen.

1. Databasebeheer

  • Methoden voor het beheren van een database in afnemende volgorde van gemak:
  • phpMyAdmin (zeer aan te bevelen!)
  • Schrijf een script dat de database zou vervormen (zie voorbeeld)
  • mysql.exe in het mysql-pakket

Ik raad vooral de eerste methode aan. Hiermee hoef je geen ALTER TABLE, ADD COLUMN, etc. queries te bestuderen. Ik ken ze nog steeds niet. Bovendien kunnen “dergelijke vragen, kameraad ambassadeur, niet in één keer worden opgelost” - wanneer moet je automatisch de structuur van een database of tabel wijzigen? Een paar woorden over de tweede methode. Dit is als het ware een oplossingstechnologie die ik gebruikte zonder kennis te hebben van phpMyAdmin en het hulpprogramma mysqldump. Het script bevat opdrachten die de database verwijderen en opnieuw maken.

Het heeft ooit geholpen, maar in het algemeen zeg ik het nog een keer: dit is een bypass-technologie, een ‘ondersteuning’.

Voor de toekomst: als je meerdere sites hebt die gebruik maken van een database, maak dan in ieder geval meerdere databases aan binnen je homeserver. Dit maakt het werk van de server eenvoudiger en elimineert de mogelijkheid van tafelverwarring. Over het algemeen zijn de regels voor het werken met een database dezelfde als die voor een website: bewaar deze in een aparte directory van andere.

2. Verbinding met de databaseserver<хост>, <логин>, <пароль>Dit wordt gedaan met behulp van de mysql_connect-functie: $connect = mysql_connect(

); Standaard is er op de mysql-server in de gebruikerstabel een rootgebruiker die alleen toegang heeft vanaf localhost, dat wil zeggen vanaf dezelfde computer waarop de mysql-server is geïnstalleerd. AANDACHT! "Heb toegang vanaf localhost" betekent dat uw PHP-script toegang heeft en dat u er vanaf elke andere computer toegang toe heeft.

Wat gebeurt er als we de mysql_connect-functie aanroepen? Wanneer uw script begint te worden uitgevoerd, wijst php ruimte in het geheugen toe voor informatie erover en de variabelen ervan. Informatie over het uitgevoerde script slaat ook informatie op over verbindingen met databases. De variabele $connect is grofweg een verwijzing naar de plaats waar deze informatie is opgeslagen.

Het werkingsmechanisme van de databasequeryfuncties is hetzelfde als dat van de verbindingsfunctie: de parameters van het verzoek en (indien nodig) de verbinding worden doorgegeven aan de functie en het resultaat wordt naar een variabele geschreven:

$result = mysql_db_query(stringdatabase, stringquery [, verbindingsvariabele]);

$result = mysql_query(stringquery [, verbindingsvariabele]);

AANDACHT! Om de functie mysql_query te gebruiken, waarin de database niet is opgegeven, moet u eerst de database selecteren die u wilt gebruiken:

mysql_select_db(tekenreeksdatabase);

Nu hebben we een variabele $result. Dit is een verwijzing naar het resultaat van de query. Er zijn daar een aantal tabelrijen. U kunt deze rijen verkrijgen met behulp van de functies mysql_fetch_row en mysql_fetch_array:

Echo"

"; while ($row = mysql_fetch_array($result)) echo " "; echo"
", $rij["veld1"], "", $rij["veld2"], "
";

De functie mysql_fetch_array voert een array uit in de opgegeven variabele (in dit geval $row), waarvan de indexen de namen van de velden zijn (en als u table.field in de lijst met queryvelden schrijft, zal de array-index veld zijn ). mysql_fetch_row produceert een array waarvan de indices getallen zijn vanaf 0.

Welke functie kan ik beter gebruiken? Als u om een ​​asterisk vraagt, d.w.z. alle velden van de tabel, en de velden moeten in een bepaalde volgorde worden weergegeven (wanneer bijvoorbeeld een tabelkop wordt getekend), is het beter om mysql_fetch_array te gebruiken. Als u één, twee of drie velden opvraagt, waarbij u de volgorde duidelijk kent, kunt u mysql_fetch_row uitvoeren - dit zal de hoeveelheid programmacode verminderen.

Dit zijn DELETE- en UPDATE-opdrachten. Dergelijke query's hebben dezelfde "rechten" als SELECT, dus de opdracht wordt op dezelfde manier naar de server verzonden: mysql_query (mysql_db_query). Maar in dit geval retourneert de functie geen resultaat:

$result = mysql_query("SELECT * FROM sometable"); but mysql_query("VERWIJDER UIT een tabel WHERE id=...");

Als we dus een selectiequery uitvoeren en het resultaat niet naar een variabele schrijven, worden de gegevens nergens opgeslagen.

5. Fouten bij het afhandelen van verzoeken

De laatste foutmelding kan worden verkregen via de mysql_error-functie:

echo "Databasefout. MySQL schrijft:", mysql_error();

Als het resultaat van een functie naar een variabele wordt geschreven, kunt u dit controleren:

$result = mysql_query($request); if (!$result) echo "Databasefout. MySQL schrijft:", mysql_error(); anders(echo"

"; while ($row = mysql_fetch_array($result)) echo " "; echo"
", $rij["veld1"], "", $rij["veld2"], "
"; };

Als we niet naar een variabele schrijven, dan is dat zo.

PHP gebruiken...

Op verschillende manieren een verbinding maken met een database in PHP:

1) de ouderwetse manier om verbinding te maken met MySQL:

$conn=mysql_connect($db_hostname, $db_username, $db_password) or die ("Geen verbinding met de server");
mysql_select_db($db_database,$conn) or die ("Nee, het was niet mogelijk om verbinding te maken met de database");

Verklaringen van de onderstaande variabelen.

De volgende functies worden gebruikt:

  • mysql_connect()- om verbinding te maken met de server;
  • mysql_select_db()- om verbinding te maken met de database;

Tegelijkertijd controleren we op deze manier voortdurend op fouten: of sterven ("De fout is zus en zo"); - vertaald als of sterf met die en die fout - om meteen te vinden waar de fout zit.

config.php

// variabelen voor verbinding met de database
$host = "lokale host"; /gastheer
$gebruikersnaam = "root"; // wachtwoord voor verbinding met de database
$wachtwoord = ""; // wachtwoord voor verbinding met de database - op de lokale computer kan het leeg zijn.
$database_name = "mijn-dolgi"; // databasenaam

// oude manier om verbinding te maken met de database
mysql_connect($host, $gebruikersnaam, $wachtwoord) or die("Kan geen verbinding maken, maak verbinding");

// selecteer de database. Als er een fout is, wordt uitgevoerd
mysql_select_db($database_name) of die(mysql_error());

index.php

require_once "config.php";


$result = mysql_query("SELECT Naam, Geld VAN Dolg ORDER OP Geld DESC LIMIT 5") of die(mysql_error());



";


while ($row = mysql_fetch_assoc($result)) (
";
}


mysql_free_result($result);

// Sluit de verbinding
mysql_close();

2) Een meer progressieve procedurele stijl - verbinding maken met de database met behulp van mysqli:

Deze methode:

  1. handiger;
  2. tot 40 keer sneller;
  3. verhoogde veiligheid;
  4. er zijn nieuwe features en functies;

Een voorbeeld van verbinding maken met een database in PHP met een selectie uit een tabel

config.php

// verbindingen met de database
$link = mysqli_connect("localhost", "gebruikersnaam", "wachtwoord", "naam-database"); // hier vullen wij direct uw gegevens in: gebruikersnaam, wachtwoord en databasenaam, het eerste veld is meestal localhost

// uitgangsverbindingsfout
als (!$link) (
echo "Fout bij het verbinden met de database. Foutcode: " . mysqli_connect_error();
Uitgang;
}

Let op: mysqli wordt overal gebruikt, niet mysql!!!

index.php

require_once "config.php";

// Voer het verzoek uit. Als er een fout is, geven we deze weer
als ($resultaat = mysqli_query($link,"SELECTEER Naam, Geld VAN Schuld VOLGORDE OP Geld DESC LIMIT 5")) (

Echo "Aan wie ben ik in aflopende volgorde verschuldigd:

";

// Zoekresultaten ophalen
terwijl ($rij = mysqli_fetch_assoc($resultaat)) (
echo $row["Naam"] . "met schulden". $row["Geld"] . " roebel.
";
}

//gebruikt geheugen vrijmaken
mysqli_free_result($resultaat);

// Sluit de verbinding
mysqli_close($link);
}

Zoals u kunt zien, zijn enkele punten gewijzigd (cursief gedrukt).

3) Objectgeoriënteerde methode om verbinding te maken met een MySQL-database - met behulp van methoden en klassen:

Nadelen: Complexer en minder gevoelig voor fouten.

Voordelen: beknoptheid en gemak voor ervaren programmeurs.

$conn = nieuwe mysqli($db_hostnaam, $db_gebruikersnaam, $db_wachtwoord, $db_database);
if($conn->connect_errno)(
die($conn->connect_error);
) else (echo "De verbinding met de database is succesvol tot stand gebracht";)

hier is in principe alles intuïtief:

  • $db_hostnaam is gastheer(meestal localhost),
  • $db_database - db-naam;
  • $db_username en $db_password - respectievelijk gebruikersnaam en wachtwoord!

Een voorbeeld van verbinding maken met een database in php OOP-stijl met sampling uit een tabel

config.php

// verbindingen met de database
$mysqli = new mysqli("localhost", "gebruikersnaam", "wachtwoord", "naam-database"); // hier vullen wij direct uw gegevens in: gebruikersnaam, wachtwoord en databasenaam, het eerste veld is meestal localhost

// uitgangsverbindingsfout
if ($mysqli->connect_error) (
die ("DB-verbindingsfout: (" . $mysqli->connect_errno . ") " . mysqli_connect_error) ;
}

Let op: mysqli wordt overal gebruikt, niet mysql!!! en in tegenstelling tot de vorige methode verschijnen pijlen “->”, die aangeven dat dit een OOP-stijl is.

index.php

require_once "config.php";

// Voer het verzoek uit. Als er een fout is, geven we deze weer
als ($resultaat = $ mysqli->query("SELECTEER Naam, Geld VAN Schuld VOLGORDE OP Geld DESC LIMIT 5")) (

Echo "Aan wie ben ik in aflopende volgorde verschuldigd:

";

// Zoekresultaten ophalen
terwijl ($rij = $resultaat-> fetch_assoc()) {
echo $row["Naam"] . "met schulden". $row["Geld"] . " roebel.
";
}

//gebruikt geheugen vrijmaken
$resultaat->sluiten();

// Sluit de verbinding
$mysqli->sluiten();
}

Jouw taak is om de verschillen te vinden.

4) Communicatie met de database via PDO:

Bij het verbinden met een MySQL-database worden voorbereide expressies gebruikt (met behulp van de voorbereidingsmethode) en als gevolg daarvan wordt de veiligheid vergroot en de prestatie aanzienlijk verhoogd.

configuratiebestand van de vorige methode! - hetzelfde

index.php

// PDO-stijl voor communicatie met MySQL
if ($stmt = $mysqli->prepare("SELECT Name, Voney FROM Dolg ORDER BY Money< ? LIMIT 5")) {

$stmt->bind_param("i", $summa);
$somma = 100000;

// uitvoering starten
$stmt->execute();

// Variabelen declareren voor voorbereide waarden
$stmt->bind_result($col1, $col2);

Echo "Aan wie ben ik in aflopende volgorde verschuldigd:

";

// Zoekresultaten ophalen
terwijl ($stmt->fetch()) (
echo $col1 . "met schulden". $kol2 . " roebel.
";
}

//gebruikt geheugen vrijmaken
$stmt->sluiten();

// Sluit de verbinding
$mysqli->close();

Zoals je kunt zien, is dit veel ingewikkelder en moet je PDO bestuderen - dit is een apart onderwerp.