Meny
Är gratis
checka in
den huvudsakliga  /  Navigatörer / Lägga till MySQL via PHP. Så här spelar du in i MySQL-databasen med PHP-kod

Lägger till MySQL via PHP. Så här spelar du in i MySQL-databasen med PHP-kod

Kommentarer överfört från bloggen

Sense
09/14/2016 kl 01:25
God eftermiddag!
Intresserad av en sådan fråga: Hur man enkelt organiserar datalagring och programinställningar utan att använda databasen? Jag vill inte bli knuten till MySQL eller Access ..

Administration.
09/14/2016 kl 22:14
Hej!

Egenskaper.Settings.
App.config
XML-fil.
Serialisering
Försök att välja något från det här från listan.

Nikolai
09/16/2016 kl 02:28.
Hej, hur man tar bort den valda strängen i DataGridView från DataGridView och phpmyadmin.

Phpmyadmin? Detta är bara ett skal att arbeta med databasen, kan du förklara?

Nikolai
09/18/2016 kl 02:24
Det är nödvändigt att den dedikerade strängen skulle tas bort från DataGridView och från databasen.

Administration.
09/19/2016 kl 07:00
Så här tar du bort en sträng i MySQL-databasen - lagt till en artikel.

Nikolai
09/20/2016 kl 09:20
Tack så mycket.

Dima
09/20/2016 kl 10:24
Hej, kan den här metoden Implementera inte via DataGridView, men genom Combobox? Om så är fallet, hur? Tack.

Administration.
09/22/2016 kl 03:21
Hej. Exempel:

Gennadig
09/22/2016 kl 18:25
Varför ska jag ange databasen med systemet.windows.forms.textbox, text: GE

Till stapeln, detta (GE) till slutet är det skrivet genen. Åtminstone i tabellinställningarna anges texten. Genet ska passar vidare. Jag tar med detta bord till mitt program och det visar sig att det visar sig mig all denna onödiga text.

Administration.
09/24/2016 kl 04:17.
Mest sannolikt är SQL-frågan felaktigt skrivet, till exempel:

I Textbox1 anger jag ett namn: Gene.

SQL Query: "Infoga i namn tabellvärden (Textbox1, ..)"; Resultat: system.windows.forms.textbox.

Och du måste sända: "Infoga i namnet på värdena Tabell (TextBox1.Text, ..)";
Resultat: gena

Gennadig
09/24/2016 kl 18:41
Det är så det är. Tack

Sense
09/25/2016 kl. 11:51
Hej. Och hur man implementerar tillägg till databas via textrutan?

Administration.
09/26/2016 kl 20:53
Alla samma i princip. Ta till exempel det senaste exemplet, du behöver:

// Skapa parametrar och lägg till dem på cmd.parameters.addwithvalue-samlingen ("@ namn", textbox1.text); cmd.parameters.addwithvalue ("@ lastname", textbox2.text);

nu parametrar: namn och efternamn Få värden som är inmatade i TextBox-S och sände dem till databasen

Linara
09/27/2016 kl 17:45.
Hej, hur är den valda strängen i datagridview och phpmyadmin?

Administration.
09/29/2016 kl 02:06.
Jag vet inte hur du kan lyfta fram linjen i phpmyadmin. Och i datagridview kan till exempel detta göras med hjälp av den urvalna händelsen.

Psh.
09/30/2016 kl 03:48.
2 kabel:
Om du vill redigera raderna så mycket, ta A la Hedisql-verktyget, konfigurera och ändra linjerna.

2Admin.
God dag! Tack för materialet - allt är väldigt coolt)
Fråga: Jag lägger till data till den här förfrågan (det är test):

String SQL \u003d "Infoga till användare (` Fio`, `Tour`,` Count`, `Cost`,` Date`, `Passport`,` Födelse`, "Kolyan", "Moskva", "1 + 1 ", 1100," 2011-11-11 "," 1111 1111 "," 9.11.1900 ");";

Data görs alla OK, men i databasen (MySQL) istället för kyrillic visar sig vara "????".

Visual Studio sa att System.String är en sekvens av Unicode.

Försökte också:

Alter database `Test` samla" koi8r_general_ci "; Alter Table `Users` collate \u003d" koi8r_general_ci "; Alter database `Test` samla" UTF8_Unicode_CI "; Alter Table `Users` collate \u003d" utf8_unicode_ci ";

Men hjälper inte ..
Vad kan det vara fel? Olika vs kodning och databas? Eller vad?
Kunde skicka den läs / förändringen.
Tack

Administration.
10/01/2016 kl 09:49.
Hej.

I databasen (och i tabellen), matchande utf_general_ci

Finns det en sådan jämförelse? Kanske utf8_general_ci?

Brukar skapa en MySQL-databas som väljer en UTF8_General_CI-jämförelse, så det finns inga problem med Cyrillic, om inte klienten kommer från klienten till servern.

Collation används för jämförelse, och i detta fall är kodningen viktig (charset). Därför måste du först se till att det är inställt på servern korrekt, till exempel i UTF8, och inte latin1.

När du ansluter till. Net-kontakten (standard) används latin1, så det är ibland nödvändigt att uttryckligen ange i anslutningssträngen UTF8:

Mysqlconnection mycon; MYCON \u003d NEW MYSQLCONECTION ("Server \u003d 127.0.0.1; UID \u003d Vasya; pwd \u003d 123; databas \u003d test; charset \u003d utf8;"); // mysqlconnectionstringbuilder: mysqlcsb.characterset \u003d "utf8";

Psh.
10/01/2016 kl 11:34.
Du har rätt, beskrivs, utf8_general_ci!
Ja hjälpte,; charset \u003d UTF8;
Tack Ogmno!

Sergiy.
10/02/2016 kl 11:02.
Tack för det arbetsexemplar, rätt. Fråga
Jag skapade ett textfält som jag skulle vilja ange en databasadress, men jag vet inte hur du ersätter dessa data här

String const \u003d " [E-post skyddad]; Användare \u003d test; "+
"Databas \u003d test; lösenord \u003d test;";
Vänligen berätta för mig hur du sätter in data från textfält i Windows-formuläret till den här designen ....

Administration.
03.10.2016 kl. 11:50
"[E-post skyddad]; Användare \u003d ...
I allmänhet är det bättre att använda egenskaperna i den här artikeln som i den här artikeln, eller Sträng.Format () -metoden

OLGA2203.
05/15/2017 kl 20:14

String Connect \u003d "Server \u003d 127.0.0.1; port \u003d 3306; databas \u003d bas; datakälla \u003d localhost; user \u003d root;"; Mysqlconnection con \u003d ny mysqlconnection (Connect); con .open (); // Installera anslutningen till databasen. Mysqlcommand cmd \u003d New MySqlcommand (); cmd.cmandtext \u003d @ "Infoga till Tovar (ID, kategori, namn, varumärke, pris, foto, storlek, färg, material, räkning) Värden (@pr, @Category, @Name, @Trademark, @pice, @ Foto, @size, @Color, @material, @count) "; cmd.parameters.addwithvalue ("@ pr", räknare); cmd.parameters.addwithvalue ("@ kategori", combobox1.selecteditem.tostring ()); cmd.parameters.addwithvalue ("@ name", textbox1.text); cmd.parameters.addwithvalue ("@ varumärke", textbox2.text); cmd.parameters.addwithvalue ("@ pris", konvertera.toint32 (textbox4.text)); cmd.parameters.addwithvalue ("@ photo", textbox3.text); cmd.parameters.addwithvalue ("@ storlek", textbox6.text); cmd.parameters.addwithvalue ("@ color", textbox5.text); cmd.parameters.addwithvalue ("@ material", textbox8.text); cmd.parameters.addwithvalue ("@ count", konvertera.toint32 (textbox7.text)); cmd.connection \u003d con; cmd.executenonquery (); MessageBox.Show ("Tillägg var framgångsrik", "Tillägget var framgångsrik", MessageBoxbuttons.ok, MessageBoxicon.asterisk);

Fel "kolumn" ID "kan inte vara null" utfärdas, ta bort tillägget av ID till kolumnen - samma sak om nästa kolumn skriver etc.
Om du lägger några ständiga värden i parentes i värden, läggs strängen till databasen.
Berätta, snälla, vad är problemet? Jag måste spela in data och värden i databasen

Senast uppdaterad: 1.11.2015

För att lägga till data för att använda uttrycket "Infoga":

$ Query \u003d "Sätt in i Tovar-värden (," Samsung Galaxy III, "Samsumg") ";

"Infoga" -uttrycket sätter in en rad i tabellen. Efter nyckelord In i angivna tabellens namn, och efter värden i parentes anger en uppsättning värden för alla kolumner. Eftersom vi har tre kolumner i tabellen anger vi tre värden.

Sedan i det sista ämnet när vi skapade ett bord indikerade vi följande kolumnsekvens: ID, namn, företag, sedan i det här fallet överförs nullvärdet till ID-kolumnen, för namn - "Samsung Galaxy III" och för Företag - "Samsumg".

Eftersom ID-kolumnen definieras som auto_increment behöver vi inte ange ett visst numeriskt värde för det, och du kan skicka nollvärdet och MySQL tilldelar följande tillgängligt värde.

Nu överväga att lägga till data i exemplet. Skapa en fil skapa.php. Med följande innehåll:

Data tillagd") // stäng anslutningen av mysqli_close ($ länk);)?\u003e

Lägg till en ny modell

Ange modellen:

Tillverkare:

Här kombineras interaktionskoden med databasen med funktionaliteten av formulär: Med hjälp av formuläret anger vi data som ska läggas till i databasen.

Säkerhet och MySQL

Här använde vi funktionen mysqli_real_escape_string (). Det tjänar till skärmsymboler i rad, som sedan används i sQL-förfrågan. Som parametrar accepterar det ett objekt med anslutning och en sträng som måste skärmas.

Således applicerar vi skärmskärmen faktiskt två gånger: först för SQL-uttryck med funktionen mysqli_real_escape_string () och sedan för HTML med hjälp av htmlenties-funktionen. Detta gör det möjligt för oss att försvara direkt från två typer av attacker: XSS-attacker och SQL-injektioner.

I den här artikeln kommer vi att urskilja, kanske en av de viktigaste Sql queries. Det begäran om att lägga till och ta bort poster från databasen. Sedan har det ofta lägg till nya poster till bordetoch gör det i automatiskt lägeDetta material krävs för att studeras.

Att börja SQL-begäran om tillsats ny inspelning i tabell:

Infoga till användare (inloggning, pass) värden ("testuser", "123456")

När du lägger till en post kommer laget i början. " SÄTT IN I", Sedan namnet på bordet där vi sätter in posten. Nästa går till fälten på fälten, som vi vill fylla. Och sedan i parentes efter ordet" värden."Vi börjar listade värdena för de fält som vi har valt. Efter att ha utfört denna begäran visas en ny post i vårt bord.

Ibland krävs uppdatera post i tabellenFör detta finns det följande SQL-förfrågan:

Uppdatera användare Set Logga in \u003d "Testuser2", Pass \u003d "1234560" där inloggning \u003d "Testuser"

Denna förfrågan är svårare, eftersom den har en design " Var", men om det strax nedanför. Först finns ett lag" Uppdatering.", sedan namnet på bordet och efter" UPPSÄTTNING."Vi beskriver värdena på alla de fält som vi vill ändra. Det skulle vara enkelt, men frågan uppstår:" Vilken typ av inspelning ska uppdateras?". För det finns det" Var"I det här fallet uppdaterar vi posten, fältet" logga in."Vilket är viktigt" Testus."Observera att om det finns flera sådana register, då absolut allt kommer att uppdateras! Det är mycket viktigt att förstå, annars riskerar du att förlora ditt bord.

Låt oss prata lite om " Var"Förutom enkla kontroller av jämlikhet finns också ojämlikhet, liksom logiska operationer: Och. och Eller..

Uppdatera användare Ställ in Login \u003d "Testuser2", Pass \u003d "1234560" Var ID< 15 AND login="TestUser"

De SQL-förfrågan Uppdatera dessa poster id vilka är mindre 15 OCH fält " logga in."Har betydelsen" Testus."Jag hoppas du behandlade designen" Var", För det är väldigt viktigt. Det är" Var"Använd av provtagning poster från tabellerOch det här är den mest del att använda uppgiften när du arbetar med databaser.

Och äntligen, enkelt SQL-förfrågan att radera poster från bordet:

Radera från användare där LOGIN \u003d "TESTUSER2"

Efter laget " Radera från."Det finns ett namn på bordet där du vill radera poster. Beskriv sedan" var "design. Om posten kommer att överensstämma med de beskrivna villkoren kommer den att raderas. Återigen uppmärksamma, beroende på antalet poster som uppfyller villkoret efter " Var"Eventuell mängd av deras nummer kan raderas.


Lektionen kommer att baseras på form respons nödvändigt nästan vilken plats som helst.

Steg ett: Skapa en databas i Mysql

Öppna phpmyadmin. (går in i baspaketet Denwer`a), och skapa en databas med titeln" test_base."Jag väljer kodningen" cp1251_general_ci".

Steg två: Skapa tabell B. Mysql via SQL-förfrågan

Du kan självklart skapa ett bord med standardverktyg phpmyadmin.Men strukturen i bordet som skapas kommer att vara synliga.

Skapa ett bord med titeln " test_table"Och med sex fält med namn:
"Namn" - Användare kommer att lagras här;
"Email" - adresser kommer att lagras här elektroniska lådor användare;
"Tema" - föremålet för meddelandet kommer att lagras här;
"Meddelande" - meddelanden kommer att lagras här;
"Data" - datumet för att skicka meddelandet lagras här;
"ID" - Identifikationsnummer för posten (strängar), nyckelfältet.

SQL Query:
Skapa tabell test_table (
ID INT (11) inte null auto_increment,
Namn Varchar (255) inte ,
E-post varchar (255) inte ,
Tema Varchar (255) inte ,
Meddelande text inte ,
Data datum inte ,
Primärnyckel (ID)
);

Steg tre: Skapa en form

index.html:

Form med sparande i MySQL

Exempel Form med datasbesparing i MySQL

























Skicka förfrågan
Namn:
E-post:
Meddelandets Ämne:
Meddelande:
























Steg fyra: Skapa en formhandlare " spara_form.php."Med bevarandet av de erhållna uppgifterna i Mysql

save_form.php:





/ * MySQL-tabell där data lagras * /
$ table \u003d "test_table";

/ * Skapa en anslutning * /

/ * Bestäm det aktuella datumet * /
$ CDATE \u003d DATUM ("Y-M-D");

/ * Gör en begäran om att infoga information i tabellen
Namn ... Datum - Namnet på de specifika fälten i databasen;
I $ _POST ["TEST_NAME"] ... $ _POST ["TEST_MESS"] - Dessa variabler innehåller data erhållna från formuläret * /
$ Query \u003d "Infoga till $ Tabell Set Name \u003d" ". $ _ Post [" Test_Name "]." ", Email \u003d". "$ _ Post [" test_mail "]." "
Tema \u003d "". $ _ Posta ["test_theme"]. "", Meddelande \u003d "". $ _ Posta ["test_mess"]. "", Data \u003d "$ CDATE" ";

/ * Stäng anslutningen * /
mysql_close ();

/ * Vid framgångsrik sparande, visa meddelandet och återbetalningslänken * /
Echo ("


Data framgångsrikt sparade!



kom tillbaka
");

Pitch femte: Slutsats av sparade data " view_data.php."

view_data.php:

/ * Anslut databasen * /
$ värdnamn \u003d "localhost"; // titel / serverväg, med mysql
$ användarnamn \u003d "root"; // användarnamn (i denwer "som standard" root ")
$ lösenord \u003d ""; // Lösenord för användaren (i denwer "som standard lösenord saknas, kan den här parametern lämnas tomt)
$ dBNAME \u003d "TEST_BASE"; // Databas namn


$ table \u003d "test_table";

/ * Skapa en anslutning * /
Mysql_connect ($ hostName, $ användarnamn, $ lösenord) eller dö ("i calce koncept");

/ * Välj databasen. Om ett fel inträffar - mata ut det * /
mysql_select_db ($ dBName) eller dö (mysql_error ());

/ * Gör en begäran om att extrahera data från fältet "Namn", "Email", "Tema",
"Meddelande", "Data" tabell "Test_Table" * /
$ Query \u003d "Välj ID, namn, email, tema, meddelande, data från $ tabell";

/ * Utför en förfrågan. Om ett fel inträffar - mata ut det. * /


Echo ("

Datautgång från MySQL

Dra ut tidigare sparade data från MySQL-tabellen










");



Echo "

\\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ N.\\ n ";
}

Echo ("

# ansökningsdatum Användarnamn E-postanvändare Meddelandets Ämne Meddelanden från användare
"$ ROW [" ID "].""$ ROW [" DATA "].". "$ ROW [" NAME "].". "$ Row [" email "].""$ row [" tema "]."". $ row [" meddelande "]."
\\ n ");

/ * Stäng anslutningen * /
mysql_close ();

Steg sex: Radera poster från databasen " del_data.php."

dEL_DATA.PHP:

/ * Anslut databasen * /
$ värdnamn \u003d "localhost"; // titel / serverväg, med mysql
$ användarnamn \u003d "root"; // användarnamn (i denwer "som standard" root ")
$ lösenord \u003d ""; // Lösenord för användaren (i denwer "som standard lösenord saknas, kan den här parametern lämnas tomt)
$ dBNAME \u003d "TEST_BASE"; // Databas namn

/ * MySQL-tabell där data lagras * /
$ table \u003d "test_table";

/ * Skapa en anslutning * /
Mysql_connect ($ hostName, $ användarnamn, $ lösenord) eller dö ("i calce koncept");

/ * Välj databasen. Om ett fel inträffar - mata ut det * /
mysql_select_db ($ dBName) eller dö (mysql_error ());

/ * Om borttagningslänken har tryckts, ta bort posten * /
$ del \u003d $ query \u003d "Ta bort från $ tabell där (id \u003d" $ del ")";
/ * Utför en förfrågan. Om ett fel inträffar - mata ut det. * /
Mysql_Query ($ Query) eller dö (mysql_error ());



/ * Utför en förfrågan. Om ett fel inträffar - mata ut det. * /
$ Res \u003d mysql_query ($ Query) eller dö (mysql_error ());

$ row \u003d mysql_num_rows ($ res);

/ * Visa data från tabellen * /
Echo ("

Visa och ta bort data från MySQL

Visar och raderar tidigare sparade data från MySQL-tabellen











");

/ * Datautgångscykel från basen av specifika fält * /
Medan ($ row \u003d mysql_fetch_array ($ res)) (
Echo "

\\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
/ * Vi genererar en länk för att ta bort fältet * /
Echo " \\ n ";
Echo "\\ n ";
}

Echo ("

# ansökningsdatum Användarnamn E-postanvändare Meddelandets Ämne Meddelanden från användare Borttagning
"$ ROW [" ID "].""$ ROW [" DATA "].". "$ ROW [" NAME "].". "$ Row [" email "].""$ row [" tema "]."". $ row [" meddelande "]."Radera
\\ n ");

/ * Stäng anslutningen * /
mysql_close ();

Steg sjunde: Redigera och uppdatera poster i databasen " uPDATE_DATA.PHP."

uPDATE_DATA.PHP:

/ * Anslut databasen * /
$ värdnamn \u003d "localhost"; // titel / serverväg, med mysql
$ användarnamn \u003d "root"; // användarnamn (i denwer "som standard" root ")
$ lösenord \u003d ""; // Lösenord för användaren (i denwer "som standard lösenord saknas, kan den här parametern lämnas tomt)
$ dBNAME \u003d "TEST_BASE"; // Databas namn

/ * MySQL-tabell där data lagras * /
$ table \u003d "test_table";

/ * Skapa en anslutning * /
Mysql_connect ($ hostName, $ användarnamn, $ lösenord) eller dö ("i calce koncept");

/ * Välj databasen. Om ett fel inträffar - mata ut det * /
mysql_select_db ($ dBName) eller dö (mysql_error ());

/ * Om redigeringsknappen har tryckts, gör ändringar * /
Om (@ $ subvent_edit) (
$ Query \u003d "Uppdatera $ table set namn \u003d" $ test_name ", email \u003d" $ test_mail ", tema \u003d" $ test_theme ", meddelande \u003d" $ test_mess "där id \u003d" $ update "";
/ * Utför en förfrågan. Om ett fel inträffar - mata ut det. * /
Mysql_Query ($ Query) eller dö (mysql_error ());
}

/ * Vi går in på $ RS-variabeln hela databasen * /
$ Query \u003d "Välj * från $ tabell";
/ * Utför en förfrågan. Om ett fel inträffar - mata ut det. * /
$ Res \u003d mysql_query ($ Query) eller dö (mysql_error ());
/ * Vi kommer att ta reda på antalet poster i databasen * /
$ row \u003d mysql_num_rows ($ res);

/ * Visa data från tabellen * /
Echo ("

Redigering och uppdatering av data

Redigera och uppdatera data i MySQL-tabellen


");

/ * Datautgångscykel från basen av specifika fält * /
Medan ($ row \u003d mysql_fetch_array ($ res)) (
Echo "

\\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo " \\ n ";
Echo "\\ n ";
Echo " \\ n ";
Echo "\\ n ";
Echo " \\ n ";
Echo "\\ n ";
Echo " \\ n ";
Echo "\\ n ";
Echo " \\ n ";
Echo "\\ n ";
Echo " \\ n ";
Echo "
# "$ row [" id "]."
"$ ROW [" DATA "]."
Användarnamn:
E-postanvändare:
Meddelandets Ämne:
Meddelande:
\\ N \\ n ";
}

/ * Stäng anslutningen * /
mysql_close ();

Tja, det är allt, trevlig kodning: 1133:

_________________________________

I den här artikeln kommer vi att titta på hur man använder PHP för att infoga rader till MySQL-databasen.

Steg 1 - Skapa ett bord

Först måste du skapa ett bord för data. Det enkel procedursom kan utföras med phpmyadmin i värdkontrollpanelen.

Efter att ha kommit in på phpmyadmin ser du ett sådant gränssnitt:
Skapa ett bord med studentnamnet i databasen U266072517__NAME genom att klicka på knappen "Skapa tabell". Därefter kommer vi att se ny sidadär du anger alla nödvändiga parametrar i tabellen:

Det här är mest enkel installationsom kan användas för bordet och tar emot för mer information På strukturen av tabeller / databaser.

Kolumnparametrar:

  • Namnet är namnet på kolumnen som visas i toppen av bordet.
  • Typ - Typ av kolumn. Till exempel valde vi Varchar eftersom vi kommer att ange strängvärden.
  • Längd / värden - Används för att ange max längd, som kan spelas in i den här kolumnen.
  • Index - Vi använde "Primär" -indexet för fältet "ID". När du skapar ett bord rekommenderas att applicera en enda kolumn som en primär nyckel. Den används för att lista poster i tabellen och krävs när du ställer in tabellen. Jag noterade också "A_i", vilket betyder "Auto increment" - den automatiska uppdragsparametern för inspelaren (1,2,3,4 ...).
    Klicka på Spara-knappen, och tabellen skapas.

Steg 2. Skriva en PHP-kod för att infoga data i MySQL.

Alternativ 1 - MySQLI-metoden

Först måste du upprätta en anslutning till databasen. Därefter använd inlägget SQL-förfrågan. Full provkod:

". mysqli_error ($ conn);) mysqli_close ($ conn);?\u003e

Den första delen av koden (3-18 rad) är utformad för att ansluta till databasen.

Låt oss börja från rad nummer 19:

$ Sql \u200b\u200b\u003d "Infoga till studenter (namn, nednamn, e-post) värden (" Thom "," flaska "," [E-post skyddad]")";

Det sätter in data till MySQL-databasen. Infoga i är en operatör som lägger till data till den angivna tabellen. I vårt exempel läggs data till studentbordet.

Nästa är listan över kolumner där värdena är infogade: namn, nednamn, e-post. Data kommer att läggas till i den angivna ordningen. Om vi \u200b\u200bskrev (e-post, efternamn, namn), skulle värdena läggas till i en annan order.

Nästa del är värdesoperatören. Här anger vi värdena för kolumner: Namn \u003d Thom, LastName \u003d injektionsflaska, e-post \u003d [E-post skyddad]

Vi lanserade en begäran med PHP-koden. I programkod SQL-förfrågningar måste vara avskärmade med citat. Nästa del av koden (20-22 rad) kontrollerar om vår begäran lyckades:

om (Mysqli_Query ($ Conn, $ SQL)) (Echo "Ny rekordcreatedsuccessfully";)

Den här koden visar ett meddelande om den framgångsrika frågan.

Och den sista delen (22 - 24 rad) visar anmälan om begäran inte lyckades:

annars (echo "-fel:". $ SQL. "
". mysqli_error ($ conn);)

Alternativ 2 - PHP-dataobjektmetod (PDO)

Först måste vi ansluta till databasen genom att skapa ett nytt PDO-objekt. När vi arbetar med det kommer vi att använda olika PDO-metoder. Metoder för objekt orsakas enligt följande:

$ The_object-\u003e the_method ();

PDO låter dig "förbereda" SQL-koden innan den exekveras. SQL-förfrågan utvärderas och "korrigeras" innan du startar. Till exempel kan den enklaste attacken med SQL-injektion utföras genom en enkel introduktion av SQL-koden i formfältet. Till exempel:

Eftersom det är syntaktiskt korrekt SQL-kod, gör en kommatecken en droppe databas användare_table med en ny SQL-fråga, och det anpassade tabellen raderas. Förberedda uttryck (relaterade variabler) Tillåt inte semikolon och citatpunkten för att slutföra källförfrågan. Därför kommer droppdatabaskommandot att utföras.

För att använda de beredda uttrycken måste du skriva en ny variabel som kallar den förbered () metoden för databasobjektet.

Korrekt kod:

getmessage (); ) // Ställ in variablerna för den person vi vill lägga till $ first_name \u003d "Thom" till databasen; $ Last_Name \u003d "flaska"; $ email \u003d " [E-post skyddad]"; // Skapa en variabel som orsakar förberedningsdatabasmetoden () // sql-frågan som du vill utföra är inmatad som en parameter, och fyllmedlen är skrivna enligt följande: PlaceHolder_Name $ my_insert_statement \u003d $ my_db_connection-\u003e Förbered (" Infoga In till studenter (Namn, LastName, Email) Värderingar (: First_Name,: Last_Name ,: Email) "); // Nu anger vi manuset, som variabel avser varje platshållare för att använda BindParam () -metoden // den första Parameter är ett fyllmedel i operatören ovan, den andra är en variabel som den måste referera $ my_insert_statement-\u003e bindparam (: first_name, $ first_name); $ my_insert_statement-\u003e bindparam (: Last_Name, $ Last_Name); $ my_insert_statement-\u003e Bindparam (: E-post, $ email); // Utför en fråga med de data som just har bestämts // exekvera () Returnerar om det är framgångsrikt och falskt, om inte, ger dig möjlighet att visa ditt eget om det är ($ My_insert_statement-\u003e Execute ()) (Echo "ny reco. rdcreatedsuccessfully "; ) Annan (echo "som inte kan creatreecord";) // Vid den här tiden kan du ändra dessa variabler och utför begäran om du vill lägga till andra data till data till databasen $ First_Name \u003d "John" -databasen; $ Last_Name \u003d "Smith"; $ email \u003d " [E-post skyddad]"$ My_insert_statement-\u003e exekvera (); // utför igen när variabeln ändras om ($ my_insert_statement-\u003e exekvera ()) (eko" ny rekordcreatedsuccessfully ";) annars (echo" oförmögen att creatreecord ";

I linjerna 28, 29 och 30 använder vi BINDPARAM () -metoden för databasobjektet. Det finns också en BindValue () -metod, som är väldigt annorlunda än den föregående.

  • bINDPARAM () - Denna metod uppskattar data när exekveringsmetoden nås. För första gången, när skriptet når den exekvera () -metoden, ser det att $ FIRST_NAME motsvarar "Thom". Binder sedan detta värde och startar begäran. När skriptet når den andra exekvera () -metoden ser det att $ First_Name nu motsvarar "John". Efter det ansluter det här värdet och startar igen en förfrågan med nya värden. Det är viktigt att komma ihåg att vi en gång definierade begäran och återanvända den med olika data på olika punkter i skriptet.
  • bindValue () - Denna metod utvärderar data så snart bindvärk () uppnås. Eftersom för $ FIRST_NAME, var "Thom" -värdet inställt på BINDVALUE (), det kommer att användas varje gång den exekvera () -metoden kallas för $ my_insert_statement.
    Observera att vi återanvända variabeln på $ First_Name och tilldela det ett nytt värde för andra gången. Efter att ha startat skriptet i databasen, kommer båda namnen att anges, trots det faktum att $ First_Name-variabeln i slutet av skriptet är "John". Kom ihåg att PHP kontrollerar hela skriptet innan du kör det.

Om du uppdaterar skriptet för att ersätta BINDPARAM på BINDVALUE, lägger du in två gånger i "Thom injektionsdatabasen, och John Smith kommer att ignoreras.

Steg 3 - Bekräftelse av framgångsrika implementering och lösningsproblem

Om frågan om att lägga in rader till databasen lyckades, kommer vi att se följande meddelande:

Eliminera vanliga misstag

Mysqli.

I något annat fall visas ett felmeddelande. Låt oss till exempel göra ett syntaktiskt fel i koden, och vi får följande:

Den första delen av koden är i ordning, anslutningen har upprättats, men SQL-förfrågan passerade inte.

"Fel: Infoga till studenter (namn, nednamn, e-post) värden (" Thom "," flaska "," [E-post skyddad]") Du har ett fel i din SQL-syntax; kolla in manualthatcorresponden till din MySQL-serverversion för att högersyntaxen ska användas nära" (namn, nednamn, email) -värden ("Thom", "flaska", " [E-post skyddad]")" Vid rad 1 "

Ett syntaxfel har gjorts som orsakade ett skriptfel. Felet var här:

$ Sql \u200b\u200b\u003d "Infoga till studenter (namn, nednamn, e-post) värden (" Thom "," flaska "," [E-post skyddad]")";

Vi använde lockiga fästen istället för normal. Det är felaktigt, och skriptet utfärdade ett syntaktiskt fel.

Pdo

I rad 7 PDO-anslutningar för fellägeuppsättning "Visa alla undantag". Om ett annat värde anges, och begäran inte skulle lyckas, skulle vi inte få några felmeddelanden.

Denna inställning ska endast användas när man utvecklar skriptet. När det är aktiverat kan databasnamnen och tabellerna visas att det är bättre att gömma sig för säkerhetsändamål. I det fall som beskrivs när, i stället för konventionella fästen som används lockigt, ser felmeddelandet ut så här:

Fatal Error: UNCAGHTEXCEPTION "PDOEXCEPTION" Med Meddelande "SQLSTATE: Syntax Error eller AccessViolation: 1064 Du har ett fel i din SQL-syntax; kolla in manualthatcorresponden till din MySQL-serverversion för att högersyntax ska kunna användas nära "(namn, nednamn, email) -värden (" Thom "," flaska "," [E-post skyddad]")" Vid rad 1 "

Andra möjliga problem:

  • Kolumnerna är felaktigt angivna (obefintliga kolumner eller stavfel i deras namn).
  • En typ av värde tilldelas en annan typ kolumn. Om du till exempel försöker infoga nummer 47 i kolumnen Namn, får vi ett fel. I den här kolumnen måste du använda ett strängvärde. Men om vi påpekade ett nummer i citat (till exempel "47") skulle det fungera, eftersom det är en sträng.
  • Försöker skriva in data till ett bord som inte existerar. Såväl som ett antagd stavfel i tabellnamnet.

Efter framgångsrik datainmatning kommer vi att se att de läggs till i databasen. Nedan är ett exempel på ett bord där de tillsatta data.

Slutsats

I den här artikeln berättade vi för hur du använder PHP för att infoga data i MySQL-databasen med MySQLI och PDO. Och också om hur man eliminerar gemensamma fel. Dessa kunskaper kommer att vara användbara vid inlärningsprogrammering och när du utvecklar din egen hemsida.

Denna publikation är översättningen av artikeln " Så här använder du PHP för att infoga data i MySQL-databasen"Förberedd av ett vänligt projektteam