PHP + MySQL kombination er at opbygge siden med en fælles, men hvordan man bruger PHP til at få adgang MySQL databaser via internettet? Læs fra en web-database arkitekturer arbejde, jeg starter.
Søgning i databasen fra internettet: Web database arkitekturer arbejde
En brugers browser sender en HTTP-anmodning, anmodningen om en bestemt webside, i form af startsiden, der forelægges til php script filer (såsom: results.php) til behandling
Web server modtager en anmodning til results.php side, hente filer, og videregives til PHP motoren aftale
PHP parsing script motorstart. Scriptet indeholder en forbindelse database og gennemførelsen af forespørgslen kommando. PHP MySQL serveren starter en forbindelse på serveren sender til de relevante undersøgelser.
MySQL database server modtager en forespørgsel anmodning om at starte behandlingen af forespørgslen, og forespørgslen resultaterne tilbage til PHP motoren.
PHP motoren er i gang efter afslutningen af scriptet, HTML tilbage til Web server.
HTML Web server, vendte derefter tilbage til kunden browser, kan brugeren se reaktion på resultatet siden.
Webforespørgsel databasen fra de grundlæggende trin
Check og filtrere data fra brugeren første vil vi filtrere deres søgekriterier brugeren kan starte eller slutte position ved et uheld ind i en tom karakter, som er den funktion trim () til at opnå. Vi har disse problemer tjekke brugerinput data skyldes forebyggelsen af flere interfaces forbinde til databasen, fordi brugerfladen fra en anden post, som kan føre til sikkerhedsspørgsmål.
Så, når de er klar til at bruge alle data indtastet af brugeren, men også det rigtige filter nogle kontrol karakterer, når brugeren indtaster data i databasen oplysningerne skal være undsluppet, og ved hjælp af en stjålet funktion med addslashes () funktion, stripslashes () funktion og get_magic_qutoes_gpc () funktioner. addslashes () funktionen til at søge i databasen og har således brug for at tilføje nogle tegn før backslash, stripslashes () funktion til at fjerne backslash tegnstreng, get_magic_qutoes_gpc () funktionen til at tilføje magiske flygte karakter " Få den aktive konfiguration magic_quotes_runtime indstilling, skal du slukke magi citater hvis run-time, giver 0, ellers 1. Vi kan også bruge htmispecialchars () på en særlig betydning i HTML tegnkodning alarm, htmispecialchars () funktion til en række foruddefinerede tegn i HTML enheder 【foruddefinerede figurer er: & (og nummer) som & "( dobbelt anførselstegn) som "'(enkelt anførselstegn) bliver' (mindre end) blive" "(større end) bliver 】
At etablere en forbindelse til passende database forbindelse PHP til MySQL til at yde en funktion bibliotek MySQLi (Jeg sagde, at forbedring).
Når du bruger MySQLi i PHP funktion bibliotek er objekt-orienteret eller procedure-orienteret syntaks:
1, objekt-orienterede, @ $ db = new MySQLi ('hostname', 'brugernavn', 'password', 'dbname'); returnerer et objekt
2, proces-orienteret: @ $ db = mysqli_connect ('hostname', 'brugernavn', 'password', 'dbname'); returnerer en ressource, den ressource, database-forbindelse, og hvis du bruger den proces tilgang, skal denne ressource være leveret til alle de andre funktioner MySQLi. Denne handling er meget lig
De fleste funktioner har MySQLi objektorienterede interface og proces interface, forskellen mellem de to versioner af funktionen er navnet på kurset er at mysqli_ begyndelsen, og spørge indgående mysqli_connect () funktionen til at få ressourcer til at håndtere. For denne regel, kan dataene være tilsluttet er en undtagelse, fordi det er MySQLi objekt constructor til at skabe. Derfor, når de forsøger at forbinde kontrollere, mysqli_connect_errno () funktionen vil vende tilbage i tilfælde af en fejl ved tilslutning fejl nummer, hvis det lykkes, det giver 0.
Bemærk venligst:
Ved tilslutning til databasen, den almindelige session fejl undertrykkelse operatør @ som den første med koden. Dette geniale håndtere alle fejl, og håndteres af undtagelse. Desuden forbindelse MySQK til databasen om antallet af samtidige forbindelser med visse restriktioner. MySQLi max_connections parameter bestemmer antallet af samtidige forbindelser, denne parameter og de tilhørende rolle Apache MaxClients parameter fortæller serveren afviser nye forbindelsesanmodninger, hvilket sikrer ingen system ressourcer, så systemet er optaget, eller systemet, når anmodet om eller lammelse. Du kan indstille Apache MaxClients parameter i httpd.conf fil redigering system. At MySQLi sæt max_connections parameter kan redigere filen my.conf.
Vælger at bruge databasen: i MySQL kommandolinjen bruge dbname, kommando og i php kan bruge $ db- select_db (dbname), eller mysqli_select_db (db_resource, dbname).
Søgning i databasen for at udføre database forespørgsler, må vi først konstruere forespørgslen: $ query = "select backup bin conf config data eshow_sitemap.html generate.sh log maint sitemap.html svn tmp fra bruger", og derefter køre $ result = $ db- ; forespørgsel ($ query), eller $ result = mysqli_query ($ db, $ query); objektorienteret version vil returnere et resultat objekt, proces versioner vil returnere et resultat ressource. Ligegyldigt hvilken metode vil gemme resultaterne i $ result variable arbejde senere brug. Hvis funktionen ikke vender tilbage falsk.
Få forespørgsel resultater ved hjælp af forskellige funktioner i forskellige måder at søge resultater eller identifikator af objektet fra resultaterne tages ud, er resultatet objekt eller identifikator returneres af forespørgslen linjer at få adgang til nøglen.
Normalt får vi resultatet, der rækker til antallet af rækker, og brug mysqli_fetch_assoc () funktion.
Tilbage rækker: $ num_results = $ result- NUM_ROWS (antallet af rækker gemt i objektet variable NUM_ROWS medlemmer) eller $ num_results = mysqli_num_rows ($ result);
Så løkke igennem hver række i loop kalder $ row = $ result- fectch_assoc (), eller $ row = mysqli_fetch_assoc ($ result); tilbage til linje med oplysninger. Retur OK, hvis objektet er en ejendom navn for hvert søgeord, hver af den tilsvarende værdi af ejendoms-værdi, hvis den returnerer en array af ressourcer til at vende tilbage.
Der er andre identifikatorer for at opnå resultaterne fra resultaterne af den metode, såsom: brug $ row = $ result- fecth_row ($ resultat), eller $ row = mysqli_fetch_row ($ result); resultatet blev bragt tilbage til en liste array; Du kan også bruge $ row = $ result- fecth_object (), eller $ row = mysqli_fecth_object ($ result); Jiang og hans følge for at gå tilbage til en genstand.
Afbryd fra databasen inden frigivelse af resultatet, der er: $ result- fri (), eller mysqli_free_result ($ resultat), og derefter lukke databasen forbindelse: $ db- close () eller mysqli_close ($ db); strengt taget denne ikke, fordi når scriptet er færdig vil de automatisk blive lukket.
Søgning i databasen fra internettet: Brug af forberedt erklæring
MySQLi biblioteker til at understøtte brugen af tilberedt erklæringer. For et stort antal af dem i gennemførelsen af den samme forespørgsel med forskellige data, kan du forbedre den hastighed og stil kan også være fri fra SQL injektion (injektion-stytle - angreb.
forberedt erklæring, den grundlæggende idé er at sende et behov for at gennemføre MySQL forespørgsel skabelon, så sender oplysningerne i en separat. Vi kan sende den samme forberedt erklæring, en masse af de samme data Denne funktion er batch behandlingen af indsatsen er meget nyttig.
Vi plejer at bruge om et par trin:
1, strukturel skabelon. Har været indsat som et eksempel: $ query = "INSERT INTO bruger værdier (?,?,?,?)";
To, så brug forberedt erklæring, en erklæring objekt eller en bygning er nødvendig for at fuldføre den faktiske forarbejdning af ressourcer. $ Stmt = $ db- forberede ($ query), eller mysqli_stmt_prepare ($ query);
3, call $ stmt- bind_param ("sssd", $ str1, $ str3, $ str3, $ int4) eller mysqli_stmt_bind_param ("sssd", til $ str1, $ str3, $ str3, $ int4) fortælle php at variable bør erstattes af spørgsmålstegn. Den første parameter er en formatstreng, efterfulgt af den variable vil blive erstattet.
3, call $ stmt- effektuere () eller mysqli_stmt_execute () funktionen vil faktisk kører forespørgslen erklæring
For at vælge typer af forespørgsler, kan du bruge $ stmt- bind_result () eller mysqli_stmt_bind_result () funktion, hvis resultater giver håb udfylde listen over variabler, så hvert enkelt opkald $ stmt- hente () eller mysqli_stmt_fetch () funktion, resultatsættet værdien af den næste linje vil blive fyldt til bindende variabel.
Interagere med databasen ved hjælp af PHP og andre grænseflader
PHP understøtter mange forskellige database til at oprette forbindelse til en funktion, herunder Oracle, Microsoft SQL Server og PostgreSQL. Typisk forbinder og søge i den database styrtede det grundlæggende princip er det samme, kan de enkelte funktioner navn være anderledes. Hvis du ikke ønsker at bruge PHP til at støtte en særlig database, kan du bruge regulære ODBC funktion.
Åbn ODBC database forbindelse, at han er forbindelse til databasen standard. ODBC funktion kun indstilles prioriteringen af enhver funktion, hvis anmodningen skal være forenelig med alle database, kan databasen ikke bruge nogen specielle funktioner.
Ud over at PHP's funktion bibliotek med udenfor, giver en række af de tilgængelige klasser, såsom MDB2 database abstraktion til forskellige database typer med samme funktion navn. Men for at installere abstraktionslag i forvejen, såsom installation af PEAR MDB2 abstraktionslag.