Regel voor regel invoer in de mysql-database. PHP gebruiken om rijen in een MySQL-database in te voegen. Gegevens invoegen met behulp van SQL-query's

Reacties verplaatst van de blog

SERGEY
14-09-2016 om 01:25
Goededag!
Ik ben geïnteresseerd in de volgende vraag: wat is de gemakkelijkste manier om de opslag van gegevens en programma-instellingen te organiseren zonder een database te gebruiken? Ik wil niet gebonden zijn aan MySQL of Access..

BEHEERDER
14-09-2016 om 22:14
Hallo!

Eigenschappen.Instellingen
App.Config
XML-bestand
serialisatie
Probeer een van deze uit de lijst te kiezen.

NICHOLAY
16-09-2016 om 02:28
Hallo, hoe kan ik de geselecteerde rij in dataGridVIew verwijderen uit dataGridVIew en phpMyAdmin.

PhpMijnAdmin? Dit is slechts een shell voor het werken met een database. Kunt u dit uitleggen?

NICHOLAY
18-09-2016 om 02:24
Het is noodzakelijk dat de geselecteerde rij uit de DataGridView en uit de database wordt verwijderd.

BEHEERDER
19/09/2016 om 07:00 uur
Hoe een rij in een MySQL-database te verwijderen - een artikel toegevoegd.

NICHOLAY
20-09-2016 om 09:20
Heel erg bedankt.

DIMA
20-09-2016 om 10:24
Hallo, is het mogelijk om deze methode niet via DataGridView te implementeren, maar via ComboBox? Zo ja, hoe? Bedankt.

BEHEERDER
22-09-2016 om 03:21
Hallo. Voorbeeld:

GENNADY
22-09-2016 om 18:25
waarom zou ik dergelijke tekst in de database System.Windows.Forms.TextBox invoeren, Tekst: ge

Trouwens, deze (ge) aan het einde is geschreven per gen, ook al zou de tekst in de tabelinstellingen verder moeten passen, ik geef deze tabel weer in mijn programma en het blijkt dat dit zo is toont al deze onnodige tekst voor mij

BEHEERDER
24-09-2016 om 04:17
Hoogstwaarschijnlijk is de SQL-query verkeerd geschreven, bijvoorbeeld:

Voer in textBox1 de naam in: Gena.

SQL-query: "Invoegen in tabelnaamwaarden (textBox1, ..)"; Resultaat: Systeem.Windows.Forms.TextBox

En je moet doorgeven: "Invoegen in tabelnaamwaarden (textBox1.Text, ..)";
Resultaat: Gena

GENNADY
24-09-2016 om 18:41
Ja, zo is het. Bedankt

SERGEY
25-09-2016 om 11:51
Hallo. Hoe implementeer ik het toevoegen aan de database via textBox?

BEHEERDER
26-09-2016 om 20:53
In principe is alles hetzelfde. Laten we bijvoorbeeld het allerlaatste voorbeeld nemen, het heeft het volgende nodig:

// maak parameters aan en voeg ze toe aan de verzameling cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@Achternaam", textBox2.Text);

nu ontvangen de parameters: Naam en Achternaam de waarden die in de tekstvakken zijn ingevoerd en brengen deze over naar de database

LINARA
27-09-2016 om 17:45
Hallo, hoe kan ik een rij selecteren in dataGridVIew en phpMyAdmin?

BEHEERDER
29-09-2016 om 02:06
Ik weet niet hoe ik een regel in phpMyAdmin moet markeren. En in dataGridView kan dit bijvoorbeeld worden gedaan met behulp van de gebeurtenis SelectionChanged.

P.S.H.
30-09-2016 om 03:48
2Linara:
Als je rijen op die manier wilt bewerken, gebruik dan een tool a la HediSQL, configureer en wijzig de rijen.

2beheerder
Goededag! Bedankt voor de materialen - alles is erg cool)
Vraag: Ik voeg gegevens toe met het volgende verzoek (het is een testverzoek):

String sql = "INSERT INTO gebruikers (`FIO`, `Tour`, `Count`, `Cost`, `Date`, `Paspoort`, `Geboorte`) VALUES ("Kolyan", "Moskou", "1+1 ", 1100, "11-11-2011", "1111 1111", "11-09-1900");";

De gegevens zijn goed ingevoerd, maar in de database (mysql) verschijnt in plaats van het Cyrillische alfabet “????”.

Visual studio zegt dat System.String een Unicode-reeks is.

Ook geprobeerd:

ALTER DATABASE `test` VERZAMELEN "koi8r_general_ci"; ALTER TABLE `gebruikers` COLLATE="koi8r_general_ci"; ALTER DATABASE `test` VERZAMELEN "utf8_unicode_ci"; ALTER TABLE `gebruikers` COLLATE="utf8_unicode_ci";

Maar het helpt niet...
Wat kan er aan de hand zijn? Verschillende VS- en DB-coderingen? Of wat?
Kunt u mij vertellen wat ik moet lezen/wijzigen?
Bedankt

BEHEERDER
10/01/2016 om 09:49
Hallo.

In de database (en in de tabel) is de mapping utf_general_ci

Bestaat er een dergelijke vergelijking? Misschien utf8_general_ci?

Meestal maken ze een MySQL-database aan door de vergelijking utf8_general_ci te kiezen, dus er zijn geen problemen met het Cyrillische alfabet, tenzij er natuurlijk boeven van de client naar de server komen.

Ter vergelijking wordt COLLATION gebruikt, maar in dit geval is de codering (tekenset) belangrijk. Daarom moet je er eerst voor zorgen dat het correct is ingesteld op de server, bijvoorbeeld in utf8, en niet in latin1.

Wanneer u verbinding maakt via de .net-connector (standaard), wordt latin1 gebruikt, dus soms moet u de utf8-codering expliciet opgeven in de verbindingsreeks:

MijnSqlConnection mycon; mycon = new MySqlConnection("server=127.0.0.1;uid=vasya;pwd=123;database=test;Charset=utf8;"); //MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

P.S.H.
10/01/2016 om 11:34
Je hebt gelijk, ik heb mezelf geplast, utf8_general_ci!
Ja, het hielp, ;Charset=utf8;
Hartelijk dank!

SERGIE
10/02/2016 om 11:02
Bedankt voor het werkende voorbeeld. Vraag
Ik heb een tekstveld aangemaakt waarin ik het IP-adres van de database wil invoeren, maar ik weet niet hoe ik deze gegevens hier moet invoegen

String conStr = "server=@textBox2;gebruiker=test;" +
"database=test;wachtwoord=test;";
Vertel me alstublieft hoe ik gegevens uit tekstvelden in een Windows-formulier in dit ontwerp kan invoegen...

BEHEERDER
10/03/2016 om 11:50
"[e-mailadres beveiligd];gebruiker=...
Over het algemeen is het beter om eigenschappen te gebruiken in plaats van zo'n string, zoals in dit artikel, of de String.Format() methode

OLGA2203
15/05/2017 om 20:14

String Connect = “Server=127.0.0.1;Poort=3306;Database=base;Gegevensbron=localhost;gebruiker=root;”; MySqlConnection con = nieuwe MySqlConnection(Connect); con.Open(); //Breng een verbinding tot stand met de database. MijnSqlCommand cmd = nieuwe MijnSqlCommand(); cmd.CommandText = @”INSERT INTO tovar(ID, Categorie, Naam, Handelsmerk, Prijs, Foto, Grootte, Kleur, Materiaal, Aantal) WAARDEN (@pr, @Categorie, @Naam, @Handelsmerk, @Prijs, @Photo, @Grootte, @Kleur, @Materiaal, @Aantal)”; cmd.Parameters.AddWithValue(“@pr”,teller); cmd.Parameters.AddWithValue(“@Category”, comboBox1.SelectedItem.ToString()); cmd.Parameters.AddWithValue(“@Name”, textBox1.Text); cmd.Parameters.AddWithValue(“@TradeMark”, textBox2.Text); cmd.Parameters.AddWithValue(“@Price”, Convert.ToInt32(textBox4.Text)); cmd.Parameters.AddWithValue(“@Photo”, textBox3.Text); cmd.Parameters.AddWithValue(“@Size”, textBox6.Text); cmd.Parameters.AddWithValue(“@Color”, textBox5.Text); cmd.Parameters.AddWithValue(“@Material”, textBox8.Text); cmd.Parameters.AddWithValue(“@Count”, Convert.ToInt32(textBox7.Text)); cmd.Verbinding = con; cmd.ExecuteNonQuery(); MessageBox.Show(“De toevoeging was succesvol”, “De toevoeging was succesvol”, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

De foutmelding "Kolom 'ID' kan niet null zijn' wordt weergegeven, ik verwijder de toevoeging aan de ID-kolom - hetzelfde wordt geschreven over de volgende kolom, enz.
Als ik constante waarden tussen haakjes in VALUES invoer, wordt de rij aan de database toegevoegd.
Vertel me alsjeblieft, wat is het probleem? Ik moet precies de gegevens en waarden die via het formulier zijn ingevoerd, in de database vastleggen

Laatste update: 1/11/2015

Gebruik de expressie "INSERT" om gegevens toe te voegen:

$query="INSERT INTO goederen VALUES(NULL, "Samsung Galaxy III", "Samsumg"");

De INSERT-instructie voegt een enkele rij in een tabel in. Na het INTO-trefwoord wordt de tabelnaam aangegeven en na VALUES wordt de reeks waarden voor alle kolommen tussen haakjes aangegeven. Omdat we drie kolommen in de tabel hebben, geven we drie waarden aan.

Omdat we in het vorige onderwerp bij het maken van een tabel de volgende volgorde van kolommen hebben opgegeven: id, naam, bedrijf, in dit geval wordt de waarde NULL doorgegeven voor de id-kolom, "Samsung Galaxy III" voor naam en "Samsumg" voor gezelschap.

Omdat de id-kolom is gedefinieerd als AUTO_INCREMENT, hoeven we deze geen specifieke numerieke waarde te geven en kunnen we een NULL-waarde doorgeven, waarna MySQL de volgende beschikbare waarde aan de kolom zal toewijzen.

Laten we nu eens kijken naar het toevoegen van gegevens aan de hand van een voorbeeld. Laten we een bestand maken maak.php met de volgende inhoud:

Gegevens toegevoegd"; ) // sluit de verbinding mysqli_close($link); ) ?>

Nieuw model toevoegen

Model invoeren:

Fabrikant:



Hier wordt de code voor interactie met de database gecombineerd met de functionaliteit van de formulieren: met behulp van het formulier voeren we gegevens in die aan de database moeten worden toegevoegd.

Beveiliging en MySQL

Hier hebben we de functie mysqli_real_escape_string() gebruikt. Het wordt gebruikt om tekens in een tekenreeks te escapen, die vervolgens wordt gebruikt in een SQL-query. Er zijn als parameters een verbindingsobject en een string nodig die moet worden geëscaped.

We gebruiken dus eigenlijk tweemaal karakter-escape: eerst voor de sql-expressie met behulp van de mysqli_real_escape_string() functie, en vervolgens voor de html met behulp van de htmlentities() functie. Hierdoor kunnen we onszelf tegen twee soorten aanvallen tegelijk beschermen: XSS-aanvallen en SQL-injecties.

In dit bericht wil ik je vertellen, hoe u de ingevoerde gegevens in het formulier naar de database kunt overbrengen. En dus maken we een eenvoudig formulier waarin we twee velden hebben: de naam van de gebruiker en zijn e-mailadres:

Jouw naam:
Uw e-mail:


Dit formulier kan gebruikt worden om een ​​nieuwe gebruiker te registreren, om nieuws te versturen, om statistieken te verzamelen, of wat dan ook... Over het algemeen voert de gebruiker zijn gegevens in dit formulier in: naam en e-mailadres, klikt op de knop en vervolgens de gegevens gaat in het PHP-script:

$naam = $_POST["naam"]; $e-mail = $_POST["e-mail"]; $result = mysqli_query("INSERT INTO gebruiker (naam, e-mailadres) VALUES ("$name", "$email")"); if ($result) ( echo "Gegevens succesvol opgeslagen!"; ) else ( echo "Er is een fout opgetreden, probeer het opnieuw."; )


Wat gebeurt er in dit script? Laten we het nu uitzoeken!
De gegevens die in het formulier zijn ingevoerd, worden met behulp van de POST-methode overgebracht naar het php-script (dat hierboven is geschreven), en met behulp van de globale array $_POST worden de gegevens gevormd in de variabelen $name en $email:

$naam = $_POST["naam"]; $e-mail = $_POST["e-mail"];


Nadat de variabelen gereed zijn om in de database te worden ingevoerd, maken we een verzoek aan. Maar eerst moeten je scripts al verbonden zijn met de database. Ik schreef in deze thread hoe je verbinding kunt maken met de database: . Het verzoek zelf ziet er als volgt uit:

$result = mysqli_query("INSERT INTO gebruiker (naam, e-mailadres) VALUES ("$name", "$email")");


In deze code hebben we aangegeven dat de volgende variabelen worden toegevoegd aan de naam- en e-mailcellen in de gebruikerstabel: $name en $email.
Vervolgens ontvangen wij, als alles goed is gegaan, bericht van de aandoening:

Gegevens succesvol opgeslagen!


Mochten er zich problemen voordoen en zijn de gegevens niet ingevuld, dan krijgen wij een foutmelding:

Er is een fout opgetreden. Probeer het opnieuw.


Dat is het!

*** *** *** *** ***

Indien gewenst kunt u meer velden toevoegen voor het invoeren van informatie. We moeten bijvoorbeeld een veld toevoegen voor het invoeren van de stad van de gebruiker. We hebben al een kant-en-klaar script (hierboven geschreven), nu voegen we gewoon een veld toe Jouw stad, laten we de variabele $city noemen. En zo verder in het gegevensinvoerformulier, na:

Uw e-mail:


toevoegen:

Jouw stad:


In het php-script, na:

$e-mail = $_POST["e-mail"];


toevoegen:

$stad = $_POST["stad"];


En natuurlijk voegen we het ook toe aan het verzoek, zoals dit:

$result = mysqli_query("INSERT INTO gebruiker (naam, e-mailadres, stad) VALUES ("$name", "$email", "$city")");


Dit is waar je op moet eindigen:
Invoerformulier:

Jouw naam:
Uw e-mail:
Jouw stad:


Script:

$naam = $_POST["naam"]; $e-mail = $_POST["e-mail"]; $stad = $_POST["stad"]; $result = mysqli_query("INSERT INTO gebruiker (naam, e-mailadres, stad) VALUES ("$name", "$email", "$city")"); if ($result == true) ( ​​​​echo "Gegevens succesvol opgeslagen!"; ) else ( echo "Er is een fout opgetreden, probeer het opnieuw."; )


Zoals je kunt zien, niets ingewikkelds! Indien nodig kunt u nog een veld toevoegen, en nog een, en nog een...

In dit artikel zullen we misschien enkele van de belangrijkste bekijken SQL-query's. Dit query's om records toe te voegen aan en te verwijderen uit een databasetabel. Omdat het HEEL vaak moet nieuwe records aan de tabel toevoegen, en doe het automatisch, dan moet dit materiaal bestudeerd worden.

Om te beginnen SQL-query om een ​​nieuw record aan een tabel toe te voegen:

INSERT INTO gebruikers (inloggen, doorgeven) waarden("TestUser", "123456")

Wanneer u een item toevoegt, wordt het commando " INVOEGEN IN", dan de naam van de tabel waarin we het record invoegen. Vervolgens staan ​​tussen haakjes de namen van de velden die we willen invullen. En dan tussen haakjes na het woord " waarden"We beginnen de waarden op te sommen van de velden die we hebben geselecteerd. Na het uitvoeren van deze zoekopdracht verschijnt er een nieuw item in onze tabel.

Soms vereist tabelinvoer bijwerken Hiervoor geldt het volgende SQL-query:

UPDATE gebruikers SET login = "TestUser2", pass="1234560" WHERE login="TestUser"

Deze zoekopdracht is complexer, omdat deze de constructie heeft " WAAR", maar hieronder meer daarover. Eerst komt het commando " UPDATE", vervolgens de tabelnaam en daarna " SET"we beschrijven de waarden van alle velden die we willen veranderen. Het zou simpel zijn, maar de vraag rijst: " Welk record moet worden bijgewerkt?". Daarom is er " WAAR". In dit geval werken we het record bij, het veld " login"wat ertoe doet" Testgebruiker". Houd er rekening mee dat als er meerdere van dergelijke records zijn, dan absoluut alles zal worden bijgewerkt! Dit is erg belangrijk om te begrijpen, anders loopt u het risico uw tafel te verliezen.

Laten we het nog even hebben over " WAAR". Naast eenvoudige gelijkheidscontroles zijn er ook ongelijkheden, evenals logische bewerkingen: EN En OF.

UPDATE gebruikers SET login = "TestUser2", pass="1234560" WHERE id< 15 AND login="TestUser"

Gegeven SQL-query zal deze gegevens bijwerken, Identiteitskaart waarvan er minder zijn 15 EN veld " login"doet er toe" Testgebruiker"Ik hoop dat je het ontwerp hebt bedacht" WAAR"omdat het heel belangrijk is. Precies" WAAR" gebruikt wanneer records uit tabellen ophalen, en dit is de meest gebruikte taak bij het werken met databases.

En tot slot: simpel SQL-query om records uit een tabel te verwijderen:

VERWIJDEREN VAN gebruikers WAAR login="TestUser2"

Na het commando " VERWIJDEREN VAN" is de naam van de tabel waarin u records wilt verwijderen. Vervolgens beschrijven we de "WHERE"-constructie. Als het record aan de beschreven voorwaarden voldoet, wordt het verwijderd. Let ook hier weer op, afhankelijk van het aantal records dat voldoet de toestand na " WAAR", een willekeurig aantal ervan kan worden verwijderd.

In deze tutorial bekijken we hoe u gegevens rechtstreeks vanuit uw PHP-scripts in een database kunt invoegen.

Gegevens invoegen met behulp van SQL

U gebruikt SQL om gegevens in een database in te voegen, op dezelfde manier waarop u SQL gebruikt om databases en tabellen te maken. De SQL-querysyntaxis is:

INSERT INTO Tabelnaam (kolom1, kolom 2, ...) WAARDEN(waarde1, waarde 2, ...)

Zoals u kunt zien, kunt u meerdere kolommen in één SQL-instructie bijwerken door ze op te geven in een door komma's gescheiden lijst. Maar u kunt uiteraard ook slechts één kolom en één waarde opgeven. Kolommen die niet in deze SQL-instructie worden vermeld, blijven leeg.

Voorbeeld: Een nieuwe persoon in een tabel invoegen

In dit voorbeeld gebruiken we de database uit les 18. Stel dat we een persoon in de database willen invoegen. Het zou kunnen Guus Gans met telefoonnummer 99887766 en geboortedatum 1964-04-20 .

De SQL-instructie kan er als volgt uitzien:

$strSQL = "INSERT INTO people(Voornaam, Achternaam, Telefoon, Geboortedatum) VALUES ("Gus", "Gans", "99887766", "20-04-1964"");

Zoals u kunt zien, kunnen SQL-instructies behoorlijk lang zijn en kunt u gemakkelijk het overzicht kwijtraken. Daarom is het beter om de SQL-instructie iets anders te schrijven:

strSQL = "INSERT INTO mensen("; strSQL = strSQL . "Voornaam", "; strSQL = strSQL . "Achternaam," strSQL = strSQL . "Telefoon," strSQL = strSQL . "geboorte)"; strSQL = strSQL . "WAARDEN ("; strSQL = strSQL . ""Gus", "; strSQL = strSQL . ""Gans", "; strSQL = strSQL . ""99887766", "; strSQL = strSQL . ""20/04/1964""); mysql_query($strSQL) of die(mysql_error());

Hier wordt de SQL-instructie opgebouwd door de zin in kleine delen te verdelen en deze vervolgens in een variabele te combineren $strSQL.

In de praktijk is er geen verschil tussen het gebruik van de ene of de andere methode, maar bij het werken met grote tabellen wordt de mogelijkheid om "bij te houden" uiterst belangrijk, dus kies de meest geschikte methode.

Laten we de volgende code proberen om Gus Goose in de database in te voegen:

Gegevens in de database invoeren // Verbinding met de databaseserver mysql_connect("mysql.myhost.com", "gebruiker", "sesam") of die (mysql_error());// Selecteer database mysql_select_db("mijndatabase") of die(mysql_error()); //De SQL-instructie bouwen $strSQL = "INSERT INTO mensen("; $strSQL = $strSQL . "Voornaam", "; $strSQL = $strSQL . "Achternaam", "; $strSQL = $strSQL . "Telefoon," $strSQL = $strSQL . "Geboortedatum"; $strSQL = $strSQL . "WAARDEN("; $strSQL = $strSQL . ""Guus", "; $strSQL = $strSQL . ""Gans", "; $strSQL = $strSQL . ""99887766", "; $strSQL = $strSQL . ""20/04/1964""); // SQL-instructie wordt uitgevoerd mysql_query($strSQL) of die (mysql_error()); //Verbinding sluiten mysql_close();

?>



DB bijgewerkt!

Gebruikersinvoer opslaan in de database

Stel dat u een eenvoudig formulier heeft: Redden Dit formulier wordt bij het bestand ingediend

invoegen.php

, waar u, zoals u in les 11 ziet, gebruikersinvoer kunt ontvangen door de inhoud van het formulier op te vragen. In dit specifieke geval zou de SQL-instructie er als volgt kunnen uitzien:

strSQL = "INSERT INTO people(FirstName) waarden("" . $_POST["FirstName"] . "")"

Op dezelfde manier kunt u gegevens opvragen uit cookies, queryreekssessies, enz.

De meest voorkomende beginnersfouten

In eerste instantie krijgt u waarschijnlijk een aantal foutmeldingen wanneer u de database probeert bij te werken. Bij het werken met de database zijn absoluut geen fouten toegestaan. Een onjuiste komma kan betekenen dat de database niet wordt bijgewerkt en dat u een foutmelding krijgt. Hieronder beschrijven we de meest voorkomende fouten.

Ongeldig gegevenstype

Het is belangrijk dat de gegevens en het gegevenstype van de kolom met elkaar overeenkomen. Elke kolom kan gegevens van een bepaald type bevatten.

De volgende schermafbeelding toont de gegevenstypen van de tabel 'mensen' uit ons voorbeeld. Er wordt een fout gegenereerd als u bijvoorbeeld tekst of een getal in een gegevensveld probeert in te voegen. Stel daarom het gegevenstype zo nauwkeurig mogelijk in. De meest voorkomende gegevenstypen worden hieronder vermeld:
Betekenis
Tekst of een combinatie van tekst en cijfers. Kan ook worden gebruikt voor getallen die niet in berekeningen worden gebruikt (bijvoorbeeld telefoonnummers). Maximaal 255 tekens - of de lengte gespecificeerd in "Lengte"
TEKST
Grote blokken tekst of een combinatie van tekst en cijfers. Maximaal 65.535 tekens
INT
Numerieke gegevens voor wiskundige berekeningen. 4 bytes
DATUM
Datums in het formaat JJJ-MM-DD 3 bytes
TIJD
Tijd in het formaat uu:mm:ss 3 bytes
DATUMTIJD
Datum en tijd in het formaat JJJ-MM-DD uu:mm:ss 8 bytes

SQL-instructies met aanhalingstekens of backslashes

Als u tekst probeert in te voegen die enkele aanhalingstekens ("), dubbele aanhalingstekens (") of backslash (\) tekens bevat, wordt de record niet in de database ingevoegd. De oplossing zou zijn om backslashes te vervangen vóór tekens die moeten worden geminemoniseerd wanneer ze in databasequery's worden ingevoegd.