sql >> Database >  >> RDS >> Mysql

Hoe PHP te verbinden met MySQL

Wil je leren hoe je PHP met MySQL verbindt en verschillende soorten databasebewerkingen uitvoert? In dit artikel doen we precies dat:we bespreken MySQL-databaseconnectiviteit in PHP.

PHP biedt verschillende manieren om PHP te verbinden met een MySQL-databaseserver. Tot PHP 5.5 was een van de meest populaire manieren de MySQL-extensie - het bood een "procedurele" manier om verbinding te maken met de MySQL-server. Deze extensie is echter verouderd vanaf PHP 5.5, dus daar gaan we het niet over hebben.

Momenteel zijn uw twee keuzes PDO en MySQLi.

De PDO-extensie (PHP Data Objects) ondersteunt naast de MySQL-server verschillende typen onderliggende databaseservers. En dus is het draagbaar voor het geval u besluit om de onderliggende databaseserver op enig moment in de toekomst te wisselen.

Aan de andere kant is de MySQLi-extensie specifiek voor de MySQL-server en biedt deze betere snelheid en prestaties. De MySQLi-extensie is in het begin misschien ook wat eenvoudiger te begrijpen, omdat u hiermee rechtstreeks SQL-query's kunt schrijven. Als u al eerder met SQL-databases hebt gewerkt, komt dit u bekend voor. De PDO-extensie maakt echter een krachtige mapping van de SQL-database naar uw PHP-code en stelt u in staat veel databasebewerkingen uit te voeren zonder dat u de details van SQL of de database hoeft te kennen. Op de lange termijn en voor grotere projecten kan dit veel codeer- en foutopsporingsinspanningen besparen.

In dit bericht gebruik ik de MySQLi-extensie. Maar u kunt hier meer te weten komen over de PDO-extensie op Envato Tuts+.

  • PHPSnel een PHP CRUD-interface bouwen met de PDO Advanced CRUD Generator ToolSajal Soni

We behandelen de volgende onderwerpen in dit artikel:

  • een MySQL-verbinding maken
  • records invoegen, bijwerken en verwijderen
  • records ophalen

Beste PHP-databasescripts op CodeCanyon

In dit bericht laat ik je zien hoe je een bare-metal verbinding maakt met een MySQL-database vanuit PHP. Dit is een belangrijke vaardigheid om te hebben, maar als u tijd wilt besparen bij uw volgende project, wilt u misschien upgraden naar een professioneel databasescript. Dit bespaart tijd en maakt uw werk gemakkelijker.

Ontdek de beste en meest bruikbare PHP-databasescripts die ooit op CodeCanyon zijn gemaakt. Met een goedkope eenmalige betaling kunt u deze hoogwaardige WordPress-thema's aanschaffen en uw website-ervaring voor u en uw bezoekers verbeteren.

Hier zijn enkele van de beste PHP-databasescripts die beschikbaar zijn op CodeCanyon voor 2020.

  • PHP Vergelijking van PHP-database-abstractielagen en CRUD-plug-ins Sajal Soni

Maak een MySQL-verbinding

In dit gedeelte laat ik u zien hoe u vanuit uw PHP-script verbinding kunt maken met de MySQL-server en een verbindingsobject kunt maken. Later zal dit verbindingsobject worden gebruikt om query's uit te voeren, uitvoer op te halen en de databaserecords te manipuleren. Zoals we eerder hebben besproken, gaan we voor dit artikel de PHP MySQLi-extensie gebruiken.

De MySQLi-extensie biedt twee verschillende manieren om databasebewerkingen uit te voeren. Je kunt het op de objectgeoriënteerde manier of op de procedurele manier gebruiken, maar aangezien deze tutorial gericht is op beginners, blijf ik bij de procedurele manier. Als je geïnteresseerd bent in een aantal objectgeoriënteerde fragmenten, kun je me pingen in het commentaargedeelte hieronder en ik zal ze met plezier verstrekken.

Om te beginnen, ga je gang en maak je de db_connect.php bestand onder je document root met de volgende inhoud.

<?php
$mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}");

if (mysqli_connect_errno()) 
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

Merk op dat ik tijdelijke aanduidingen heb gebruikt in de mysqli_connect functie - u moet deze vervangen door werkelijke waarden.

Laten we elke tijdelijke aanduiding doornemen om te zien waar deze voor staat.

  • {HOST_NAME} :Dit vertegenwoordigt de hostnaam of het IP-adres van uw MySQL-server. Als je de MySQL-server samen met PHP op hetzelfde systeem hebt geïnstalleerd, moet je localhost gebruiken of 127.0.0.1 . Aan de andere kant, als u een MySQL-server gebruikt die extern wordt gehost, kunt u de bijbehorende hostnaam of het bijbehorende IP-adres gebruiken.
  • {DATABASE_USERNAME} :Dit vertegenwoordigt de gebruikersnaam van uw MySQL-gebruiker. Dit is in feite de gebruikersnaam die u gebruikt om verbinding te maken met uw MySQL-server.
  • {DATABASE_PASSWORD} :Dit vertegenwoordigt het wachtwoord van uw MySQL-gebruiker. Nogmaals, dit is het wachtwoord dat u gebruikt om verbinding te maken met uw MySQL-server, samen met de MySQL-gebruikersnaam.
  • {DATABASE_NAME} :Dit is de naam van de MySQL-database waarmee u verbinding wilt maken. Zodra de verbinding tot stand is gebracht, gaat u naar deze database voor verdere bewerkingen.

Ga je gang en vervang deze tijdelijke aanduidingen door werkelijke waarden. In mijn geval heb ik de MySQL-server lokaal geïnstalleerd en heb ik een MySQL-gebruiker met tutsplus-demo-user als de MySQL-gebruikersnaam en tutsplus-demo-password als het MySQL-wachtwoord. En daarmee ziet het bovenstaande voorbeeld er als volgt uit:

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno()) 
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

Als u dit voorbeeld uitvoert, moet het een databaseverbindingslink maken en deze toewijzen aan de $mysqli_link variabele, die we later zullen gebruiken om verschillende soorten databasebewerkingen uit te voeren.

Aan de andere kant, als er een probleem is met het opzetten van de verbinding, wordt de  mysqli_connect_errno functie retourneert een foutcode, en de mysqli_connect_error functie zal de werkelijke fout weergeven. In het bovenstaande voorbeeld hebben we het gebruikt voor foutopsporingsdoeleinden.

We hebben nu een succesvolle verbinding met de MySQL-server en vanaf het volgende gedeelte zullen we zien hoe we deze kunnen gebruiken om verschillende soorten zoekopdrachten uit te voeren.

Records invoegen

In de vorige sectie hebben we besproken hoe de mysqli_connect . te gebruiken functie om een ​​databaseverbinding met de MySQL-server op te zetten. In dit gedeelte gaan we verder en bespreken we hoe u het verbindingsobject kunt gebruiken om INSERT . uit te voeren vragen.

Als u de voorbeelden die in dit artikel worden besproken wilt volgen, moet u de volgende MySQL-tabel in uw database maken. Het is de tabel die we vanaf nu in alle voorbeelden gaan gebruiken.

CREATE TABLE `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Ga je gang en maak de bovenstaande MySQL-tabel met behulp van de phpMyAdmin-software of de opdrachtregeltool.

Laten we vervolgens de db_insert.php . maken bestand met de volgende inhoud. Vergeet niet de verbindingsparameters te vervangen door die van uzelf.

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

$insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`)
VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, '[email protected]') ."')";
 
// run the insert query
If (mysqli_query($mysqli_link, $insert_query)) {
    echo 'Record inserted successfully.';
}
 
// close the db connection
mysqli_close($mysqli_link);
?>

Eerst zetten we een databaseverbinding op met behulp van de mysqli_connect functioneren, zoals we eerder hebben besproken. Daarna hebben we de invoegquery voorbereid die we later gaan uitvoeren. Het is belangrijk op te merken dat we de mysqli_real_escape_string hebben gebruikt functie om te ontsnappen aan tekenreekswaarden die we gaan gebruiken in de invoegquery. In het bijzonder moet u deze functie gebruiken wanneer u te maken heeft met waarden die zijn ingediend via $_POST variabelen om SQL-injectie te voorkomen.

Ten slotte hebben we de mysqli_query . gebruikt functie, waarvoor twee argumenten nodig zijn. Het eerste argument is de actieve verbindingslink waar de query zal worden uitgevoerd. En het tweede argument is de MySQL-query die we willen uitvoeren. De mysqli_query functie retourneert TRUE als de zoekopdracht met succes is uitgevoerd.

Ten slotte hebben we de mysqli_close . gebruikt functie om de actieve databaseverbinding te sluiten. Het is een goede gewoonte om de databaseverbinding te sluiten zodra u klaar bent met databasebewerkingen.

Ga je gang en voer het script uit, en dat zou een record moeten invoegen in de students tafel!

Records bijwerken

Het bijwerken van de records in een database vanuit het PHP-script lijkt erg op de invoegbewerking; het enige verschil is dat de query de update-query wordt in plaats van de insert-query.

Laten we het bovenstaande voorbeeld herzien en de first_name update bijwerken veld, zoals weergegeven in het volgende voorbeeld.

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

$update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = '[email protected]'";
 
// run the update query
If (mysqli_query($mysqli_link, $update_query)) {
    echo 'Record updated successfully.';
}
 
// close the db connection
mysqli_close($mysqli_link);
?>

Ga je gang en voer het script uit, en dat zou het record in de students moeten bijwerken tafel.

Hoe records te selecteren

In de eerdere secties hebben we besproken hoe u vanuit het PHP-script records in een database kunt invoegen en bijwerken. In deze sectie zullen we onderzoeken hoe u records uit een database kunt ophalen met behulp van de verschillende soorten MySQLi-functies.

Ten eerste moet u de mysqli_query . gebruiken functie om de selectiequery uit te voeren. Na succesvolle uitvoering van de selectiequery, wordt de mysqli_query functie retourneert het mysqli-resultaatobject, dat we zouden kunnen gebruiken om de records te herhalen die door de select-query worden geretourneerd. Als het gaat om het ophalen en herhalen van de records van het MySQLi-resultaatobject, zijn er verschillende functies beschikbaar.

  • mysqli_fetch_all :Hiermee kunt u alle resultaatrijen tegelijk ophalen. U kunt ook aangeven of u resultaten wilt als een associatieve array, een numerieke array of beide.
  • mysqli_fetch_array :Hiermee kunt u één rij tegelijk ophalen. En dus moet je de while-lus gebruiken om alle records te herhalen. Nogmaals, je kunt aangeven of je een resultaatrij wilt als een associatieve array, een numerieke array of beide.
  • mysqli_fetch_assoc :Het haalt een resultaatrij één voor één op als een geassocieerde array.
  • mysqli_fetch_object :Het haalt een resultaatrij één voor één op als een object.

Laten we eens kijken naar het volgende voorbeeld om te begrijpen hoe het werkt:

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

$select_query = "SELECT * FROM students LIMIT 10";
$result = mysqli_query($mysqli_link, $select_query);

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo "First Name:" . $row['first_name'] . "<br/>";
    echo "Last Name:" . $row['last_name'] . "<br/>";
    echo "Email:" . $row['email'] . "<br/>";
    echo "<br/>";
}

// close the db connection
mysqli_close($mysqli_link);
?>

Zoals je kunt zien, hebben we de mysqli_fetch_array . gebruikt functie met de MYSQLI_ASSOC optie als tweede argument. En dus retourneert het de resultaatrij als een geassocieerde array. Als u de MYSQLI_NUM . gebruikt optie, zou je er toegang toe krijgen zoals $row[0] , $row[1] en $row[2] in het bovenstaande voorbeeld.

Aan de andere kant, als u de mysqli_fetch_object functie in het bovenstaande voorbeeld, hebt u toegang tot de waarden zoals weergegeven in het volgende fragment. Kortheidshalve zal ik alleen het while-lusfragment opnemen.

…
…
while ($row = mysqli_fetch_object($result)) {
    echo "First Name:" . $row->first_name . "<br/>";
    echo "Last Name:" . $row->last_name . "<br/>";
    echo "Email:" . $row->email . "<br/>";
    echo "<br/>";
}
...
...

Op deze manier kunt u dus records uit de MySQLi-database ophalen en weergeven.

Hoe records te verwijderen

In deze sectie zullen we zien hoe u verwijderquery's uitvoert vanuit het PHP-script. Het verwijderen van records uit een database is een vrij eenvoudige bewerking, omdat u alleen de verwijderquery hoeft voor te bereiden en deze uit te voeren met de mysqli_query functie.

Laten we het volgende voorbeeld doornemen om te zien hoe het werkt.

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

$delete_query = "DELETE FROM students WHERE `email` = '[email protected]'";
 
// run the update query
If (mysqli_query($mysqli_link, $delete_query)) {
    echo 'Record deleted successfully.';
}
 
// close the db connection
mysqli_close($mysqli_link);
?>

Zoals u kunt zien, is alles hetzelfde als we al hebben gezien met de voorbeelden van invoegen en bijwerken, behalve dat de query in dit geval een verwijderquery is.

Dus dat is hoe je verschillende soorten databasebewerkingen kunt uitvoeren vanuit het PHP-script.

En daarmee zijn we aan het einde van deze tutorial gekomen. Wat we tot nu toe hebben besproken, zou u moeten helpen om de concepten voor databaseconnectiviteit te versterken, met name hoe u PHP met MySQL kunt verbinden en verschillende soorten bewerkingen kunt uitvoeren.


  1. mysql selecteer dynamische rijwaarden als kolomnamen, een andere kolom als waarde

  2. BITAND() Functie in Oracle

  3. Hoe het verschil tussen twee datums in SQLite te berekenen

  4. BeanCreationException:fout bij het maken van bean met de naam 'flywayInitializer'