Hvordan unngå doble oppføringer med PHP i MySQL
Mange PHP-applikasjoner vil tillate brukere å legge inn data som deretter settes inn i en MySQL database. Det er viktig for disse programmene for å sjekke hvorvidt en post allerede finnes i MySQL database før du legger den. En reaktiv måte å gjøre dette på er å sette en entydig indeks på nøkkelen feltet i MySQL database, legge til posten og sjekke for å se om det oppstod en feil. Men er det mer grasiøs, proaktiv tilnærming for å se etter en duplikat posten før du legger data til databasen.
Bruksanvisning
1 Start en redaktør og opprette en ny PHP-script fil. For eksempel inn:
nano adddata.php
2 Opprett HMTL skjemaet til å akseptere brukerundersøkelser. Sett metoden for å "post" og handlingen til «update.php" for å legge de innsendte resultatene til en "update.php" fil du vil lage neste. For eksempel inn:
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<Html xmlns = "http://www.w3.org/1999/xhtml">
<Head>
<Meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" />
<Title> Data Entry / title>
</ Head>
<Body>
<Form method = "post" action = "update.php">
<Input type = "hidden" name = "ferdig" value = "1" />
<P> Kundenummer: <input type = "text" name = "custnum" size = "10" /> </ p>
<P> Kundenavn: <input type = "text" name = "custname" size = "30" /> </ p>
<P> <input type = "submit" name = "submit" value = "submit" /> </ p>
</ Form>
</ Body>
</ Html>
3 Avslutt redaktør og lagre filen. Start redaktør igjen og skape "update.php" fil. For eksempel inn:
nano update.php
4 Sjekk skjult felt skjemaet for å sikre at "update.php" filen ble kalt fra "post" operasjon. For eksempel inn:
<? Php
$ Completed = $ _POST [ 'fullført'];
if (! $ fullført = "1") die ( "<p> Form ikke fullført </ p>");
5 Pakk ut kundenummer og kundens navn fra de bokførte resultater. Kontroller at hver verdi inneholder data. For eksempel inn:
$ Antall = (isset ($ _ POST [ 'custno']) $ _POST [ 'custno']: "";
? $ Name = (isset ($ _ POST [ 'custname'] $ _POST [ 'custname']: "";
if ($ antall == "" || $ navn == "") die ( "<p> Form ikke fylt ut riktig </ p>");
6 Koble til MySQL server og velg ønsket database. For eksempel inn:
$ DBC = mysql_connect ( "localhost", "brukernavn", "passord") or die ( "<p> Kan ikke koble til serveren Feil er!" Mysql_error ().);
$ Db = mysql_select_db ( "kunder");
7 Lag og utføre en spørring på databasen som søker etter kundenummeret du skal legge til. Sørg for at du skal slippe unna brukerundersøkelser strenger med "mysql_real_escape_string." Sjekk returverdien og utgang dersom kunden finnes allerede. For eksempel inn:
$ Query = "SELECT custno fra kunder hvor custom =" 'mysql_real_escape_string ($ tall).. "';
$ Resultat = mysql_query ($ query);
if ($ resultat && mysql_num_rows ($ resultat)> 0) die ( "<p> Kunde finnes allerede </ p>");
8 Lag og utføre en spørring for å sette inn den nye kunden inn i databasen. Sørg for at du skal slippe unna brukerundersøkelser strenger med "mysql_real_escape_string." For eksempel inn:
$ Query = "INSERT INTO kunder (custno, custname) verdier (" 'mysql_real_escape_string ($ tall).. ","' Mysql_real_escape_string ($ name).. ") ';
$ Resultat = mysql_query ($ query);
if (! $ resultat) die ( "<p> Feil ved innsetting av kundepost </ p>");
echo "<p> Kunde lagt </ p>";
?>