Finestre.  Virus.  I Quaderni.  Internet.  ufficio.  Utilità.  Autisti

In questo articolo analizzeremo, forse, uno dei più importanti query SQL. Questo query per aggiungere ed eliminare record da una tabella di database. Perché, MOLTO spesso aggiungere nuovi record alla tabella, e fallo dentro Modalità automatica, allora questo materiale deve essere studiato.

Iniziare Query SQL per aggiungere un nuovo record a una tabella:

INSERT INTO utenti (login, pass) valori("TestUser", "123456")

Quando si aggiunge un record, il primo comando è " INSERIRE", quindi il nome della tabella in cui inseriamo il record. Poi vengono i nomi dei campi che vogliamo riempire tra parentesi. E poi tra parentesi dopo la parola " valori"iniziamo ad elencare i valori dei campi che abbiamo selezionato. Dopo aver eseguito questa query, un nuovo record apparirà nella nostra tabella.

A volte richiesto aggiorna la voce della tabella, per questo c'è quanto segue Interrogazione SQL:

AGGIORNA utenti SET login = "TestUser2", pass="1234560" WHERE login="TestUser"

Questa richiestaè più complesso, poiché ha la costruzione " DOVE", ma a riguardo un po 'più in basso. Prima arriva il comando" AGGIORNAMENTO", quindi il nome della tabella e dopo " IMPOSTATO" descriviamo i valori di tutti i campi che vogliamo modificare. Sarebbe semplice, ma sorge la domanda: " Quale voce deve essere aggiornata?". Per questo c'è " DOVE". IN questo caso aggiorniamo record, campo " login"che conta" Utente di prova". Si prega di notare che se ci sono molti di questi record, allora sarà tutto aggiornato! Questo è molto importante da capire, altrimenti rischi di perdere il tuo foglio di calcolo.

Parliamo un po' di più DOVE". Inoltre semplici controlli per l'uguaglianza, ci sono anche disuguaglianze, così come operazioni logiche: E E O.

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

IL Interrogazione SQL aggiornerà tali record id che sono meno 15 E campo " login"ha il significato" Utente di prova". Spero che tu abbia capito il design" DOVE"perché è molto importante. Appunto" DOVE" si usa quando recuperare i record dalle tabelle e questa è l'attività utilizzata più di frequente quando si lavora con i database.

E infine, semplice Query SQL per eliminare i record da una tabella:

ELIMINA DAGLI utenti WHERE login="TestUser2"

Dopo il comando " ELIMINA DA" va il nome della tabella in cui si desidera eliminare i record. Successivamente, descriviamo la costruzione "WHERE". Se il record soddisfa le condizioni descritte, verrà eliminato. Ancora una volta, prestare attenzione, a seconda del numero di record che soddisfa la condizione dopo " DOVE", è possibile eliminarne un numero qualsiasi.

In questo articolo vedremo come utilizzare PHP per inserire righe in un database MySQL.

Passaggio 1: creazione di una tabella

Per prima cosa devi creare una tabella per i dati. Questa è una semplice procedura che può essere eseguita con utilizzando phpMyAdmin nel pannello di controllo dell'hosting.

Dopo aver effettuato l'accesso a phpMyAdmin vedrai un'interfaccia come questa:
Creiamo una tabella denominata Studenti nel database u266072517_name facendo clic sul pulsante "Crea tabella". Dopo vedremo nuova pagina, su cui impostiamo tutti i parametri necessari della tabella:

Questo è il massimo facile configurazione, che può essere utilizzato per table e get Informazioni aggiuntive sulla struttura delle tabelle/database.

Opzioni colonna:

  • Nome è il nome della colonna che appare nella parte superiore della tabella.
  • Type è il tipo della colonna. Ad esempio, abbiamo scelto varchar perché inseriremo valori stringa.
  • Lunghezza/Valori - utilizzato per specificare la lunghezza massima che può avere una voce in questa colonna.
  • Indice - Abbiamo utilizzato un indice "Primario" per il campo "ID". Quando si crea una tabella, si consiglia di utilizzare as chiave primaria una sola colonna. Viene utilizzato per elencare i record in una tabella ed è necessario durante l'impostazione della tabella. Ho anche contrassegnato "A_I", che sta per "Auto Increment" - l'opzione per assegnare automaticamente il numero di record (1,2,3,4...).
    Fare clic sul pulsante Salva e la tabella verrà creata.

Passaggio 2. Scrittura del codice PHP per inserire i dati in MySQL.

Opzione 1 - Metodo MySQLi

Per prima cosa devi stabilire una connessione al database. Successivamente, utilizziamo la query SQL INSERT. Esempio di codice completo:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

La prima parte del codice (riga 3 - 18) è per la connessione al database.

Iniziamo con la riga #19:

$sql = "INSERT INTO Studenti (nome, cognome, email) VALORI ("Thom", "Vial", " [e-mail protetta]")";

Inserisce i dati in Banca dati MySQL. INSERT INTO è un'istruzione che aggiunge dati alla tabella specificata. Nel nostro esempio, i dati vengono aggiunti alla tabella Studenti.

Segue l'enumerazione delle colonne in cui sono inseriti i valori: nome, cognome, email. I dati verranno aggiunti nell'ordine specificato. Se avessimo scritto (email, cognome, nome), i valori sarebbero stati aggiunti in un ordine diverso.

La parte successiva è l'istruzione VALUES. Qui specifichiamo i valori per le colonne: name = Thom, lastname = Vial, email = [e-mail protetta].

Abbiamo eseguito una query utilizzando il codice PHP. Nel codice, le query SQL devono essere sfuggite tra virgolette. La parte successiva del codice (riga 20-22) controlla se la nostra richiesta è andata a buon fine:

if (mysqli_query($conn, $sql)) ( echo "Nuovo record creato con successo"; )

Questo codice visualizza un messaggio che la richiesta è andata a buon fine.

E l'ultima parte (riga 22 - 24) visualizza una notifica se la richiesta non è andata a buon fine:

else ( echo "Errore: " . $sql . "
" .mysqli_error($conn); )

Opzione 2 - Metodo oggetto dati PHP (PDO)

Per prima cosa dobbiamo connetterci al database creando un nuovo oggetto PDO. Quando ci lavoriamo, useremo vari metodi DOP. I metodi oggetto sono chiamati in questo modo:

$l'Oggetto->il_Metodo();

DOP consente di "preparare" il codice SQL prima che venga eseguito. La query SQL viene valutata e "corretta" prima di essere eseguita. Ad esempio, il più semplice attacco SQL injection può essere eseguito semplicemente inserendo il codice SQL in un campo del modulo. Per esempio:

Poiché si tratta di SQL sintatticamente corretto, il punto e virgola trasforma DROP DATABASE user_table in una nuova query SQL e la tabella utente viene eliminata. Le espressioni preparate (variabili associate) non consentono il punto e virgola e le virgolette per terminare la query originale, pertanto il comando DROP DATABASE non verrà mai eseguito.

Per utilizzare le istruzioni preparate, è necessario scrivere una nuova variabile che chiami il metodo prepare() dell'oggetto database.

Codice corretto:

getMessage(); ) // Imposta le variabili per la persona che vogliamo aggiungere al database $first_Name = "Thom"; $cognome_nome = "Fiala"; $e-mail = " [e-mail protetta]"; // Crea una variabile che chiama il metodo prepare() dell'oggetto database // La query SQL che desideri eseguire viene immessa come parametro e i segnaposto sono scritti in questo modo: placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare( "INSERT INTO Students ( name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Ora diciamo allo script a quale variabile si riferisce ogni segnaposto per utilizzare il metodo bindParam() // Il il primo parametro è il segnaposto nell'istruzione precedente, il secondo è la variabile a cui dovrebbe fare riferimento $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam (:email, $email); // Esegui la query usando i dati che abbiamo appena definito // Il metodo execute() restituisce TRUE se ha avuto successo e FALSE in caso contrario, lasciandoti a stampare il tuo messaggio se ($my_Insert_Statement ->execute()) ( echo "Nuovo record creato con successo"; ) else ( echo "Unable to createrecord"; ) // A questo punto, puoi modificare i dati della variabile ed eseguire una query per aggiungere altri dati al database data al database $first_Name = "John"; $cognome_nome = "Rossi"; $e-mail = " [e-mail protetta]"; $my_Insert_Statement->execute(); // Esegui di nuovo quando la variabile viene modificata if ($my_Insert_Statement->execute()) ( echo "Nuovo record creato con successo"; ) else ( echo "Impossibile creare record";

Alle righe 28, 29 e 30 utilizziamo il metodo bindParam() dell'oggetto database. Esiste anche un metodo bindValue(), che è molto diverso dal precedente.

  • bindParam() - Questo metodo valuta i dati quando viene raggiunto il metodo execute(). La prima volta che lo script raggiunge il metodo execute(), vede che $first_Name corrisponde a "Thom". Quindi associa quel valore ed esegue la query. Quando lo script raggiunge il secondo metodo execute(), vede che $first_Name ora corrisponde a "John". Quindi associa questo valore ed esegue nuovamente la query con nuovi valori. È importante ricordare che una volta abbiamo definito una query e l'abbiamo riutilizzata con dati diversi in punti diversi dello script.
  • bindValue() - Questo metodo valuta i dati non appena viene raggiunto bindValue(). Poiché $first_Name è stato impostato su "Thom", quando viene raggiunto bindValue(), verrà utilizzato ogni volta che viene chiamato il metodo execute() su $my_Insert_Statement.
    Si noti che stiamo riutilizzando la variabile $first_Name e assegnandole un nuovo valore una seconda volta. Dopo aver eseguito lo script, entrambi i nomi verranno elencati nel database, nonostante il fatto che la variabile $first_Name alla fine dello script abbia il valore "John". Ricorda che PHP controlla l'intero script prima di eseguirlo.

Se aggiorni lo script per sostituire bindParam con bindValue, inserirai "Thom Vial" due volte nel database e John Smith verrà ignorato.

Passaggio 3: confermare il successo e risolvere i problemi

Se la richiesta di inserimento righe nel database è andata a buon fine, verrà visualizzato il seguente messaggio:

Risoluzione degli errori comuni

MySQLi

In ogni altro caso, verrà visualizzato un messaggio di errore. Ad esempio, facciamo un errore di sintassi nel codice e otteniamo quanto segue:

La prima parte del codice va bene, la connessione è stata stabilita correttamente, ma la query SQL non è riuscita.

"Errore: INSERT INTO Studenti (nome, cognome, email) VALUES ("Thom", "Vial", " [e-mail protetta]") Hai un errore nella tua sintassi SQL; controlla il manuale che corrisponde alla tua versione del server MySQL per la sintassi dei diritti da usare accanto a "(nome, cognome, email) VALUES ("Thom", "Vial", " [e-mail protetta]")" alla riga 1"

Si è verificato un errore di sintassi che ha causato il fallimento dello script. L'errore era qui:

$sql = "INSERT INTO Studenti (nome, cognome, email) VALORI ("Thom", "Vial", " [e-mail protetta]")";

Abbiamo usato le parentesi graffe invece delle normali parentesi graffe. Questo non è corretto e lo script ha dato un errore di sintassi.

DOP

Sulla riga 7 della connessione PDO, la modalità di errore è impostata su "visualizza tutte le eccezioni". Se fosse impostato un altro valore e la richiesta fallisse, non riceveremmo alcun messaggio di errore.

Questa impostazione deve essere utilizzata solo durante lo sviluppo di uno script. Se abilitato, possono essere visualizzati i nomi dei database e delle tabelle, che è meglio tenere nascosti per motivi di sicurezza. Nel caso descritto sopra, quando sono state utilizzate parentesi graffe invece di parentesi normali, il messaggio di errore è simile al seguente:

Errore irreversibile: Uncaughtexception "PDOException" con messaggio "SQLSTATE: Syntax error or accessviolation: 1064 Hai un errore nella tua sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi dei diritti da usare vicino a "(nome, cognome, email) VALUES ("Thom", "Vial", " [e-mail protetta]")" alla riga 1"

Altri possibili problemi:

  • Le colonne sono specificate in modo errato (colonne inesistenti o un errore di ortografia nei loro nomi).
  • Un tipo di valore viene assegnato a una colonna di un altro tipo. Ad esempio, se provi a inserire il numero 47 nella colonna Nome, otterrai un errore. Questa colonna deve utilizzare un valore stringa. Ma se specificassimo un numero tra virgolette (ad esempio, "47") funzionerebbe, perché è una stringa.
  • Si è tentato di inserire dati in una tabella che non esiste. Oltre a un errore di ortografia nel nome della tabella.

Dopo aver inserito correttamente i dati, vedremo che sono stati aggiunti al database. Di seguito è riportato un esempio di tabella in cui sono stati aggiunti dati.

Conclusione

In questo articolo, abbiamo spiegato come utilizzare PHP per inserire dati in un database MySQL utilizzando MySQLi e PDO. E anche come correggere errori comuni. Questa conoscenza sarà utile quando imparerai a programmare e quando svilupperai il tuo sito web.

Questa pubblicazione è una traduzione dell'articolo " Come utilizzare PHP per inserire dati nel database MySQL» preparato da un amichevole team di progetto

In questo post voglio raccontare come trasferire nel database i dati inseriti nel form. E così creiamo un semplice form dove avremo due campi: un nome utente e la sua email:

Il tuo nome:
La tua email:


Questo modulo può essere utilizzato per registrare un nuovo utente, per inviare notizie, per raccogliere statistiche, e per qualsiasi cosa... In generale, l'utente compila questo modulo con i suoi dati: nome e mail, clicca sul pulsante e poi il i dati vanno nello script php:

$nome = $_POST["nome"]; $email = $_POST["email"]; $result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")"); if ($risultato) ( echo "Dati salvati con successo!"; ) else ( echo "Si è verificato un errore, riprova."; )


Cosa succede in questo copione? Ora scopriamolo!
I dati inseriti nel modulo vengono trasferiti allo script php (che è scritto sopra) utilizzando il metodo POST e utilizzando l'array globale $_POST, i dati vengono formati nelle variabili $name e $email:

$nome = $_POST["nome"]; $email = $_POST["email"];


Dopo che le variabili sono pronte per essere inserite nel database, componiamo una query. Ma prima, i tuoi script devono essere già collegati al database, come connettersi al database, ho scritto in questo thread :. La richiesta stessa è simile a questa:

$result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")");


In questo codice, abbiamo indicato che le seguenti variabili verranno aggiunte alle celle name e email che si trovano nella tabella utente: $name e $email .
Inoltre, se tutto è andato bene, riceveremo un messaggio dalla condizione:

Dati salvati con successo!


Se ci sono stati problemi e i dati non sono stati inseriti, riceveremo un messaggio di errore:

Si è verificato un errore. Per favore riprova.


È tutto!

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

Se lo si desidera, è possibile aggiungere più campi per l'inserimento delle informazioni, ad esempio, è necessario aggiungere un campo per l'inserimento della città dell'utente. Abbiamo già uno script già pronto (scritto sopra), ora aggiungiamo solo un campo La tua città, chiamiamo la variabile: $city . E così nel form di inserimento dati, dopo:

La tua email:


aggiungere:

La tua città:


Nello script php, dopo:

$email = $_POST["email"];


aggiungere:

$città = $_POST["città"];


E, naturalmente, lo aggiungiamo anche alla richiesta, in questo modo:

$result = mysqli_query("INSERT INTO utente (nome, email, città) VALUES ("$nome", "$email", "$città")");


Ecco quale dovrebbe essere il risultato finale:
Modulo di inserimento:

Il tuo nome:
La tua email:
La tua città:


Sceneggiatura:

$nome = $_POST["nome"]; $email = $_POST["email"]; $città = $_POST["città"]; $result = mysqli_query("INSERT INTO utente (nome, email, città) VALUES ("$nome", "$email", "$città")"); if ($result == true) ( ​​​​echo "Dati salvati con successo!"; ) else ( echo "Si è verificato un errore, riprova."; )


Come puoi vedere, niente di complicato! Se necessario, puoi aggiungere un altro campo, un altro e un altro ...

Commenti spostati dal blog

SERGEY
14/09/2016 alle 01:25
Buon pomeriggio!
Interessato a questa domanda: qual è il modo più semplice per organizzare l'archiviazione dei dati e le impostazioni del programma senza utilizzare un database? Non voglio essere legato a MySQL o Access...

AMMINISTRATORE
14/09/2016 alle 22:14
Ciao!

Proprietà.Impostazioni
App.Config
FileXML
serializzazione
Prova a scegliere uno di questi dall'elenco.

NIKOLAI
16/09/2016 alle 02:28
Ciao, come posso eliminare la riga evidenziata in dataGridVIew da dataGridVIew e phpMyAdmin.

PhpMyAdmin? Questa è solo una shell per lavorare con il database, puoi spiegare?

NIKOLAI
18/09/2016 alle 02:24
è necessario che la riga selezionata sia cancellata dal DataGridView e dal database.

AMMINISTRATORE
19/09/2016 alle 07:00
Come eliminare una riga in un database Mysql - aggiunto un articolo.

NIKOLAI
20/09/2016 alle 09:20
Molte grazie.

DIMA
20/09/2016 alle 10:24
Ciao, è possibile implementare questo metodo non tramite DataGridView, ma tramite ComboBox? Se é cosi, come? Grazie.

AMMINISTRATORE
22/09/2016 alle 03:21
Ciao. Esempio:

GENNAIO
22/09/2016 alle 18:25
perché dovrei aggiungere tale testo al database System.Windows.Forms.TextBox, Text: ge

A proposito, questo (ge) alla fine è scritto dal gene, anche se il testo è specificato nelle impostazioni della tabella.La parola del gene dovrebbe adattarsi ulteriormente, visualizzo questa tabella nel mio programma e risulta che mostra tutto questo testo non necessario per me

AMMINISTRATORE
24/09/2016 alle 04:17
Molto probabilmente la query SQL è scritta in modo errato, ad esempio:

In textBox1 inseriamo il nome: Gene.

Query Sql: "Inserisci nel nome della tabella valori (textBox1, ..)"; Risultato: System.Windows.Forms.TextBox

E devi passare: "Insert into table name values(textBox1.Text, ..)";
Risultato: Gena

GENNAIO
24/09/2016 alle 18:41
Ecco com'è. Grazie

SERGEY
25.09.2016 alle 11:51
Ciao. E come implementare l'aggiunta al database tramite textBox?

AMMINISTRATORE
26/09/2016 alle 20:53
Tutto è uguale in linea di principio. Ad esempio, prendiamo l'esempio più recente, ha bisogno di:

//crea i parametri e li aggiunge alla raccolta cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@LastName", textBox2.Text);

ora i parametri: Nome e Cognome ricevono i valori inseriti nelle caselle di testo e li passano al database

LINARA
27/09/2016 alle 17:45
Ciao, com'è la riga evidenziata in dataGridVIew e phpMyAdmin?

AMMINISTRATORE
29/09/2016 alle 02:06
Non so come puoi selezionare una riga in phpMyAdmin. E nel dataGridView, ad esempio, questo può essere fatto usando l'evento SelectionChanged.

PSH
30/09/2016 alle 03:48
2Linara:
Se vuoi davvero modificare le righe, prendi uno strumento alla HediSQL, modifica e modifica le righe.

2admin
Buona giornata! Grazie per i materiali - tutto è dichiarato in modo molto freddo)
Domanda: Aggiungo i dati con la seguente richiesta (è di prova):

String sql = "INSERT INTO users (`FIO`, `Tour`, `Count`, `Cost`, `Date`, `Passport`, `Birth`) VALUES ("Kolyan", "Mosca", "1+1 ", 1100, "2011-11-11", "1111 1111", "11/9/1900");";

I dati sono inseriti tutti ok, ma nel database (mysql) invece che in cirillico risultano essere “????”.

Visual Studio afferma che System.String è una sequenza unicode.

Provato anche:

ALTER DATABASE `test` COLLATE "koi8r_general_ci"; ALTER TABLE `utenti` COLLATE="koi8r_general_ci"; ALTER DATABASE `test` COLLATE "utf8_unicode_ci"; ALTER TABLE `utenti` COLLATE="utf8_unicode_ci";

Ma non aiuta..
Cosa può esserci di sbagliato? Codifiche VS e DB diverse? O cosa?
Potrebbe inviare cosa leggere / modificare.
Grazie

AMMINISTRATORE
01.10.2016 alle 09:49
Ciao.

Nel DB (e nella tabella) la collation utf_general_ci

Esiste un paragone del genere? Forse utf8_general_ci?

Di solito creano un database Mysql scegliendo il confronto utf8_general_ci, quindi non ci sono problemi con l'alfabeto cirillico, a meno che, ovviamente, il server non riceva bug dal client.

COLLATION viene utilizzato per il confronto, ma in questo caso la codifica (set di caratteri) è importante. Pertanto, prima devi assicurarti che sia impostato correttamente sul server, ad esempio, in utf8 e non in latin1.

Quando ci si connette tramite il connettore .net (per impostazione predefinita), viene utilizzato latin1, quindi a volte è necessario specificare esplicitamente la codifica utf8 nella stringa di connessione:

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

PSH
01.10.2016 alle 11:34
Hai ragione, ti sei descritto, utf8_general_ci!
Sì, ha aiutato, ;Charset=utf8;
Grazie mille!

SERGIO
02.10.2016 alle 11:02
Grazie per l'esempio funzionante. Domanda
Ho creato un campo di testo in cui vorrei inserire l'indirizzo IP del database, ma non so come sostituire questo dato qui

String conStr = " [e-mail protetta];utente=prova;" +
"database=test;password=test;";
Per favore dimmi come inserire i dati dai campi di testo in Windows Form in questo design….

AMMINISTRATORE
03.10.2016 alle 11:50
"[e-mail protetta];utente=...
In generale, è meglio usare le proprietà invece di una tale stringa, come in questo articolo, o il metodo String.Format()

OLGA2203
15/05/2017 alle 20:14

String Connect = "Server=127.0.0.1;Port=3306;Database=base;Origine dati=localhost;utente=root;"; MySqlConnection con = new MySqlConnection(Connect); con.Open(); //Stabilisce una connessione al database. MySqlCommand cmd = nuovo MySqlCommand(); cmd.CommandText = @”INSERT INTO tovar(ID,Category,Name,TradeMark,Price,Photo,Size,Color,Material,Count) VALUES (@pr, @Category, @Name, @TradeMark, @Price, @Photo, @Dimensione, @Colore, @Materiale, @Conteggio)”; cmd.Parameters.AddWithValue("@pr",counter); 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.Connection = con; cmd.ExecuteNonQuery(); MessageBox.Show("Aggiunta riuscita", "Aggiunta riuscita", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

Viene generato l'errore "La colonna 'ID' non può essere nulla", rimuovo l'aggiunta alla colonna ID - lo stesso è scritto per la colonna successiva, ecc.
Se inserisco valori costanti tra parentesi in VALUES, la riga viene aggiunta alla base.
Dimmi, per favore, qual è il problema? Ho bisogno di scrivere nel database esattamente i dati e i valori inseriti tramite il form

In questa guida imparerai come iniziare a gestire un database dal tuo PHP copione. imparerai aggiungendo un record a una tabella MySQL, utilizzando codice php. Prima di iniziare, dai un'occhiata ai nostri altri tutorial che trattano i passaggi di base per lavorare con PHP e database: connessione da PHP a un database MySQL.

Prima di iniziare, controlla quanto segue:

  • Accedi al pannello di controllo del tuo hosting

Passaggio 1: creazione di una tabella

Prima di tutto, dobbiamo creare una tabella per i tuoi dati. Questa è una procedura molto semplice che puoi eseguire phpMyAdmin dal pannello di controllo del tuo hosting. Abbiamo già coperto il processo di creazione di un database MySQL in un precedente tutorial, quindi salteremo questo punto qui.

Dopo essere entrato nella pagina phpMyAdmin, vedrai un'immagine simile:

Creiamo una tabella chiamata Studenti per la nostra banca dati u266072517_nome. È possibile creare una nuova tabella facendo clic sul pulsante Crea tabella. Successivamente, vedrai una nuova pagina in cui puoi inserire tutti i dati richiesti per la tua tabella:

Questo è il modo più semplice per creare una tabella, per ulteriori informazioni sulla struttura della tabella/database e quali impostazioni possono essere utilizzate per ciascun campo, fare riferimento alla documentazione ufficiale di phpMyAdmin.

Ecco alcune semplici spiegazioni dei campi che useremo:

  • Nomeè il nome del tuo campo. Verrà visualizzato nella parte superiore del tuo tavolo.
  • tipo– qui puoi impostare il tipo di campo. Ad esempio, scegliamo varchar, perché qui dobbiamo inserire una stringa con un nome (che contiene lettere, non numeri).
  • Lunghezza/Valori– viene utilizzato per impostare la lunghezza massima del tuo record in questo campo.
  • Indice– usiamo l'indice “Primario” per il nostro campo “ID”. Quando viene creata una tabella, si consiglia di avere un campo ID. Viene utilizzato per indicizzare i record in una tabella quando vengono impostate le relazioni tra le tabelle. Si può notare anche qui "A_io", che significa Incremento automatico. Questa impostazione incrementerà automaticamente l'indice (1,2,3,4...).

Clic Salva e il tuo tavolo sarà creato.

Passaggio 2: generazione del codice PHP e aggiunta di un record alla tabella MySQL

Opzione 1 - Metodo MySQLi

Prima di tutto è necessario stabilire una connessione al database, secondo la nostra precedente guida. Successivamente, possiamo continuare con la query SQL per aggiungere un record alla tabella MySQL - INSERIRE. Ecco un esempio di codice completo con una connessione e un metodo di inserimento:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

Pertanto, la prima parte del codice (righe 3 – 18 ) fanno parte della creazione di una connessione al database. Non ripeteremo più questa parte, se vuoi sapere cosa significa ogni riga, fai riferimento al nostro tutorial precedente su come connettersi a un database.

Iniziamo con la linea 19 :

$sql = "INSERT INTO Studenti (nome, cognome, email) VALORI ("Thom", "Vial", " [e-mail protetta]")";

Questa è la riga di codice più importante, fa tutto ciò che descriviamo in questo tutorial: aggiunge una voce di tabella MySQL al database. INSERIREè un'espressione che aggiunge un record alla tabella del database MySQL specificata. Nel nostro esempio, aggiungiamo dati alla tabella Studenti.

Andando avanti, tra parentesi, definiamo i campi della tabella, i valori a cui aggiungeremo: (nome, cognome, email). I dati verranno aggiunti in un ordine specifico. Se scriviamo (e-mail, cognome, nome), i valori verranno aggiunti in un ordine diverso.

La parte successiva del valore VALORI. Qui impostiamo i nostri valori sui campi specificati in precedenza. Pertanto, ogni campo avrà il proprio valore. Ad esempio, nel nostro caso sarebbe qualcosa del tipo: name=Thom, lastname=Vial, email= [e-mail protetta] .

È importante notare che qui formiamo Interrogazione SQL utilizzando il codice PHP. Le query SQL devono essere racchiuse tra virgolette. Nel nostro esempio, tutto ciò che si trova tra le virgolette e dopo $sql = è una query SQL.

La parte successiva del codice ( 20 – 22 line) esegue la nostra query e controlla se la query ha avuto successo:

If (mysqli_query($conn, $sql)) ( echo "Nuovo record creato con successo"; )

Se la query è stata eseguita correttamente, viene visualizzato un messaggio di successo.

E la parte finale 22 – 24 linee) mostrano un altro messaggio, nel caso in cui la nostra richiesta fallisca:

Else ( echo "Errore: " . $sql . "
" .mysqli_error($conn); )

Questo codice ci mostra un messaggio di errore nel caso in cui qualcosa sia andato storto.

Opzione 2 - Metodo PHP Data Object (P HP Data O bject)

Come nell'esempio precedente, dobbiamo prima effettuare una connessione al database, che viene eseguita durante la creazione di un nuovo oggetto PDO - il tutorial precedente spiega come farlo. Poiché la connessione al database MySQL è un oggetto PDO, dobbiamo utilizzare vari "metodi" PDO (tipo di funzioni che fanno parte di un particolare oggetto) per preparare ed eseguire la query. I metodi oggetto sono chiamati in questo modo:

$l'Oggetto->il_Metodo();

DOP consente di "preparare" il codice SQL prima di eseguirlo. La query SQL viene valutata e regolata prima di essere eseguita. Quindi, un semplice attacco SQL injection può essere eseguito compilando il codice SQL in un campo del modulo. Per esempio:

// L'utente scrive questo nel campo del nome utente di un modulo di accesso thom"; DROP DATABASE user_table; // La query finale diventa "SELECT * FROM user_table WHERE username = thom"; DROP DATABASE user_table;

Poiché il codice SQL è sintatticamente corretto, il punto e virgola rende DROP DATABASE tabella_utente nuova query SQL e la tua tabella utente viene eliminata. Le espressioni preparate non consentono caratteri E ; per completare la richiesta originale e l'istruzione SCARICA BANCA DATI non sarà mai eseguito.

Sempre utilizzare query preparate quando si inviano o si ricevono dati da un database con PDO.

Per utilizzare le espressioni preparate, è necessario creare una nuova variabile che chiamerà il metodo preparare() sull'oggetto di database.

Il codice corretto è simile a:

$servername = "mysql.hostinger.com"; $database = "u266072517_nome"; $nome utente = "u266072517_utente"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$database;"; $dsn_Opzioni = ; // Crea una nuova connessione al database MySQL usando PDO, $my_Db_Connection è un oggetto try ( $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Connesso con successo"; ) catch (PDOException $ error) ( echo "Errore di connessione: " . $error->getMessage(); ) // Imposta le variabili per la persona che vogliamo aggiungere al database $first_Name = "Thom"; $cognome_nome = "Fiala"; $e-mail = " [e-mail protetta]"; // Qui creiamo una variabile che chiama il metodo prepare() dell'oggetto database // La query SQL che vuoi eseguire viene inserita come parametro, e i segnaposto sono scritti in questo modo:placeholder_name $my_Insert_Statement = $my_Db_Connection-> prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Ora diciamo allo script a quale variabile si riferisce effettivamente ogni segnaposto usando il metodo bindParam() // Primo parametro è il segnaposto nell'istruzione precedente - il secondo parametro è una variabile a cui dovrebbe fare riferimento $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement-> bindParam(:email, $email); // Esegui la query utilizzando i dati appena definiti // Il metodo execute() restituisce TRUE se ha successo e FALSE se non lo è, permettendoti di scrivere qui i tuoi messaggi se ( $my_Insert_Statement->execute()) ( echo "Nuovo record creato con successo"; ) else ( echo "Impossibile creare il record"; ) // A questo punto puoi modificare i dati delle variabili ed eseguire nuovamente per aggiungere altri dati al database $first_Name = "John"; $cognome_nome = "Rossi"; $e-mail = " [e-mail protetta]"; $my_Insert_Statement->execute(); // Esegui di nuovo ora che le variabili sono cambiate if ($my_Insert_Statement->execute()) ( echo "Nuovo record creato con successo"; ) else ( echo "Impossibile creare il record"; )

Alle righe 28, 29 e 30 usiamo il metodo bindParam() oggetto della banca dati. C'è anche un metodo bindValue(), diverso dal precedente.

  • bindParam() - questo metodo conta i dati quando il metodo eseguire() raggiunto. La prima volta che lo script raggiunge il metodo eseguire() lo vede $nome_nome fa riferimento a "Thom", associa tale valore ed esegue la query. Quando lo script ottiene la seconda volta al metodo eseguire() lui sembra così $nome_nome now fa riferimento a "John", associa tale valore ed esegue nuovamente la query con il nuovo valore. È importante capire che creiamo una richiesta una volta e poi sostituiamo dati diversi in punti diversi dello script.
  • bindValue() - questo metodo valuta i dati non appena la coda li raggiunge. Dal valore $nome_nomeè stato dato come "Thom", al momento abbiamo raggiunto il metodo bindValue(), verrà utilizzato quando si chiama il metodo eseguire() Per $my_Insert_Statement.

Si noti che stiamo riutilizzando la variabile $nome_nome e dargli un nuovo valore una seconda volta. Se controlli il tuo database dopo aver eseguito questo script, entrambi i nomi dati saranno presenti, nonostante il valore della variabile $nome_nome sarà uguale a "John" alla fine di questo script. Ricorda che PHP valuta il contenuto di uno script prima di eseguirlo.

Se modifichi il tuo script sostituendo bindParam SU bindValue, aggiungerai "Thom Vial" al database MySQL due volte e John Smith verrà ignorato.

Passaggio 3: verifica del successo e risoluzione dei problemi comuni

Se la query che abbiamo eseguito sul database MySQL ha avuto successo, vedremo un messaggio come questo:

Risolvere errori comuni

MySQLi

In ogni altro caso, verrà visualizzato un messaggio di errore al posto del messaggio precedente. Ad esempio, facciamo un errore di sintassi nel nostro codice e otteniamo questo:

Come possiamo vedere, la prima parte del codice è ok, la connessione è stata stabilita con successo, ma la nostra query SQL non è riuscita durante l'esecuzione.

"Errore: INSERT INTO Studenti (nome, cognome, email) VALUES ("Thom", "Vial", " [e-mail protetta]") Hai un errore nella tua sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare accanto a "(nome, cognome, email) VALUES ("Thom", "Vial", " [e-mail protetta]")" alla riga 1"

C'è un errore di sintassi che causa il fallimento del nostro script. L'errore era qui:

$sql = "INSERT INTO Studenti (nome, cognome, email) VALORI ("Thom", "Vial", " [e-mail protetta]")";

Come puoi vedere, stiamo usando le parentesi graffe invece delle parentesi tonde. Questo non è corretto e provoca un errore di sintassi nel nostro script.

DOP

Nella riga 7 della connessione PDO, la modalità di gestione degli errori è impostata su "visualizza tutte le eccezioni". Se lo elimini dallo script e la richiesta fallisce, non riceverai alcun messaggio di errore. Con le eccezioni abilitate, verranno visualizzati i problemi specifici riscontrati. In generale, questo è il modo migliore per sviluppare uno script, in quanto può rivelare database e nomi di tabelle che vorresti nascondere a qualcuno che potrebbe ottenere l'accesso non autorizzato ai tuoi dati. Nel caso precedente, quando sono state utilizzate parentesi graffe invece di parentesi tonde, l'errore appare come di seguito:

Errore irreversibile: eccezione non rilevata "PDOException" con messaggio "SQLSTATE: errore di sintassi o violazione di accesso: 1064 Si è verificato un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da utilizzare vicino a "(nome, cognome, email) VALUES ("Thom", "Vial", " [e-mail protetta]")" alla riga 1"

Altri problemi che potresti riscontrare:

  • Campi specificati in modo errato (campi inesistenti o errori di ortografia).
  • Mancata corrispondenza del tipo di valore con il tipo di campo. Ad esempio, quando vogliamo assegnare il valore di un numero 47 campo Nome, otterremo un errore perché il valore dovrebbe essere una stringa. Tuttavia, se specifichi un numero tra virgolette, ad esempio, “47” , non ci saranno errori, perché il nostro numero verrà scritto come una stringa in questo campo.
  • È stato effettuato un tentativo di inserire dati in una tabella che non esiste oppure si è verificato un errore di ortografia nel nome della tabella.

Tutti questi errori possono essere corretti seguendo le guide alla risoluzione dei problemi o controllando il registro degli errori.

Dopo aver aggiunto correttamente i dati, dovremmo vederli nel nostro database. Ecco un esempio di una tabella in cui abbiamo aggiunto i nostri dati, come visualizzato in phpMyAdmin.

Conclusione

In questa guida, hai imparato come usare Codice PHP per aggiungere record alla tabella MySQL utilizzando MySQLi E DOP. Considerati anche casi di errori comuni e le loro soluzioni. Sapere come utilizzare il codice PHP da aggiungere a un database MySQL ti sarà utile se stai imparando a programmare o stai già costruendo il tuo sito web.

Se noti un errore, seleziona una parte di testo e premi Ctrl + Invio
CONDIVIDERE: