Do baze podatkov dostopajte iz programskega jezika PHP

Do baze podatkov dostopajte iz programskega jezika PHP

Do baze podatkov dostopajte iz programskega jezika PHP

Kazalo

    IoT spletni strežnikHTTP POST IoT spletni strežnikBaza podatkov MySQL. IoT spletni strežnikJezik PHP IoT spletni strežnik

    V tem zadnjem članku v seriji o Uporaba spletnega strežnika za shranjevanje podatkov iz naprav, povezanih z internetom stvari, pojasnjuje, kako zapisovati v bazo podatkov MySQL informacije, ki jih vozlišča IoT pošljejo strežniku, ki izvaja zahteve HTTP POST. Bralci tega članka ali celotnega bloga morda niso posebej seznanjeni s programiranjem v jezik PHP ampak zagotovo da s programiranjem mikrokrmilniki v jezikih C o C + + tako boste lahko z izjemo nekaterih podrobnosti, kot je znak za dolar ($) pred spremenljivkami, sledili primerom brez dodatnih pojasnil, saj so bili narejeni po zelo nevtralnem slogu programiranja, ki ni specifičen za PHP.

    Shranite podatke v bazo podatkov

    Kot je pojasnjeno v članku o Shranjevanje podatkov IoT s pošiljanjem zahtev HTTP POST spletnemu strežniku, na koncu glav telo zahteve POST vsebuje podatke, ki so poslani strežniku. Najpogostejši način za pošiljanje teh informacij na strežnik je v obliki navadnega besedila, ker jih je lažje analizirati tudi "ročno". Ko so podatki, poslani na strežnik, zapleteni, jih bo zagotovo priročno strukturirati z uporabo, na primer, formata XML o JSON. Pri običajni uporabi spletnega strežnika za upravljanje informacij iz naprav, povezanih z internetom stvari, ni običajno, da bi potrebovali strukturo podatkov, zato je običajno, da jih pošljete v navadnem besedilu v obliki variable=valor.

    V zahtevi HTTP POST v naslednjem primeru je vir (običajno spletna stran) /iot/grabar_temperatura zahtevan od strežnika polaridad.es in poslane so tri spremenljivke: ne, tp in cr, ki vsebujejo vrednosti " 12", "10.26 » in «2.18» Pomembno si je tudi zapomniti, da obstaja prazna vrstica za ločevanje glav od podatkov.

    Končni cilj naslednje kode PHP bo poslal strežniku baze podatkov MySQL vrstni red SQL:

    S katerim bo ustvarjen nov zapis (INSERT)
    v podatkovni bazi ogrevanja (INTO calefacciones)
    dodeljevanje poljem (numero_estancia,temperatura,corriente)
    vrednosti, ki ustrezajo zahtevi HTTP POST VALUES (12, 10.26, 2.18)

    Povezava z bazo se izvede s funkcijo mysqli_connect glede na format: mysqli_connect($servidor,$usuario,$clave,$base_datos) ki vrne kazalec na objekt povezave in ki uporablja spremenljivke, ki definirajo dostop (kot so uporabnik, geslo ...) in ki so bile predhodno dodeljene za prihodnje hipotetične uporabe v skriptu.

    Za ugotavljanje, ali je bila povezava uspešna, se uporablja funkcija mysqli_connect_errno() ki vrne številko napake, ki se je morda zgodila, ali nič (false), če je bila povezava vzpostavljena pravilno. Za obveščanje o napakah se aplikacija, ki naredi zahtevo HTTP, odzove z vrednostjo nič, v tem primeru program, ki se izvaja v µC vozlišča IoT.

    Pred dodajanjem besedilu, ki je shranjeno v $consulta_sql s katerim je naročilo sestavljeno SQL ki se pošlje strežniku baze podatkov, so informacije, ki so prispele v spremenljivkah zahteve POST, predhodno obdelane najmanj, da se prepreči napad Vbrizgavanje SQL. V prejšnjem primeru je pretvorba v ustrezen podatkovni tip vsiljena (int) (celo število) oz (float) (decimalno s plavajočo vejico), kar bi zadostovalo za odstranitev morebitne zlonamerne kode, dodane v podatke zahteve s strani spletni strežnik.

    Kot je razvidno iz jezik PHP Simbol pike (.) se uporablja za povezovanje besedil, ki tvorijo vrstni red SQL ali operator pike in enačaja (.=) za dodajanje besedila na desno od tistega, ki že shranjuje spremenljivko, enojni narekovaj (‘) pa se uporablja tudi za pritrditev besedilnih konstant, ne le znakov. Čeprav je v tem primeru mogoče uporabiti tudi dvojne narekovaje («), v jezik PHP se uporabljajo za obdelavo vsebine, na primer vključno s spremenljivkami znotraj besedila v formatu $texto="Me llamo $nombre"; kot alternativa formatu $texto='Me llamo '.$nombre; prav tako vam omogoča, da narekovaje ene vrste vključite v drugo, ne da bi morali uporabiti znake za izhod, kadar se dvojine izmenjujejo znotraj enoj ali enojne znotraj dvojine, kot v dodelitvi $texto='esto no hay que "escaparlo" en PHP';.

    Za izvedbo poizvedbe do strežnika MySQL se uporablja funkcija mysqli_query z obliko mysqli_query($conexion,$consulta_sql) ki za parametre vzame objekt-povezavo z bazo podatkov in besedilo z naročilom SQL ki je bila sestavljena.

    Funkcija mysqli_query($conexion,$consulta_sql) vrne kazalec-objekt, ki se lahko uporabi za prečkanje vrnjenih podatkov, če je primerno, ali, kot v zgornjem primeru, za pridobitev informacij o operaciji, zlasti za poznavanje indeksa, dodeljenega novemu zapisu, ki ga je operacija ustvarila v tabeli " grelci" s funkcijo mysqli_insert_id($conexion)

    Vrednost, ki jo je vrnil mysqli_query($conexion,$consulta_sql) lahko oceni na false v logični operaciji, da ugotovi, da je prišlo do napake. V prejšnjem primeru se uporablja za vrnitev ničle, kot v primeru napake pri povezavi, aplikaciji, ki naredi zahtevo POST. Na ta način bo program vrnil število, večje od nič, ki predstavlja indeks novega zapisa, če je operacija pravilna, ali nič, če operacija povzroči napako.

    Če želite sprostiti vire, ki so bili dodeljeni povezavi baze podatkov, jo "zaprete" s funkcijo mysqli_close($conexion)

    Preberite informacije iz baze podatkov

    Razen v arhitekturah za računalništvo v megli Večina vozlišč IoT se omeji na pošiljanje informacij, ki jih zajamejo njihovi senzorji, na strežnik, tj. spletni strežnik Z njimi komunicira le za shranjevanje informacij, tako da je s prejšnjim primerom dobršen del primerov, ki bodo nastali v tej aplikaciji, že razrešenih. Naslednji korak bi lahko bil ustvariti spletno stran, ki prikazuje podatke, ki jih spremljajo naprave, povezane z internetom stvari, delo začelje kar je zunaj tega, kar je zajeto v tej seriji vadnic.

    Lahko se zgodi, da ima vozlišče IoT določeno interaktivnost in se obnaša drugače na podlagi zgodovinskih podatkov ali predvideva možnost spreminjanja svojega vedenja glede na konfiguracijo, ki pride do njega s strežnika, ali celo vozlišče je zaslon, ki prikazuje graf s podatki, ki so bili nedavno spremljani v primerjavi s podatki, pridobljenimi na prejšnje datume. Za vse te situacije je zanimiva tudi možnost branja podatkov s strežnika MySQL skozi spletni strežnik kot je prikazano v naslednjem primeru, ki simulira pridobivanje seznama datumov stanj alarma, določenih s trenutki, v katerih je temperatura presegla 40 °C

    V zgornjem primeru se za poizvedbo po bazi podatkov uporabi ukaz SQL SELECT glede na osnovni format SELECT campos FROM tabla WHERE condición ORDER BY campo DESC z edino posebnostjo dodajanja funkcij v datumsko polje DAY, MONTH, YEAR y TIME da bi ločeno pridobili dan, številko meseca, leto in uro. Predpisan pogoj je, da je temperatura višja od 40.0 in je razvrščena z uporabo datumskega polja od najvišje (najbolj trenutne) do najnižje (najstarejše), ki jo označuje s klavzulo DESC

    Za zanko skozi vrednosti, ki jih vrne poizvedba iz zanke for z znano dimenzijo se uporablja funkcija mysqli_num_rows($resultado) ki označuje število najdenih zapisov. S funkcijo mysqli_data_seek($resultado,$numero_resultado) kurzor rezultatov je mogoče premakniti na določen položaj, izražen s števcem zanke for, $numero_resultado, v primeru.

    Za shranjevanje v vektorju polj zapisa, na katera kaže kazalec rezultata, se uporablja funkcija mysqli_fetch_row($resultado) ki je dodeljena spremenljivki $registro ki bodo kasneje uporabljeni za oblikovanje besedne zveze z različnimi vrednostmi, dostop do njih z njihovimi indeksi.

    Ko so bile prevožene vse vrednosti, se sprostijo viri, dodeljeni rezultatu poizvedbe SQL s funkcijo mysqli_free_result($resultado)

    Obdelajte informacije iz baze podatkov. Primerjaj vrednosti.

    V nekaterih primerih je primerno, da je obdelava informacij centralizirana na strežniku, tudi če bi bilo to mogoče storiti v vozliščih IoT v stilu računalništvo v megli. V naslednjem primeru so razlogi, ki so simulirani za to, varnost; Vozlišče ima informacije o svojem ključu (ključavnici) in o zahtevi (ključu), vendar ne ve, ali je primerno dati prednost kombinaciji obeh, zato se mora posvetovati s strežnikom, ki je tisti, ki sprejme odločitev in obvesti vozlišče z odgovorom nič (za navedbo neuspešne primerjave) ali ena (za navedbo, da je bila primerjava uspešna) glede na rezultat poizvedbe v vaši bazi podatkov.

    S tem izgovorom si lahko ogledate primer, v katerem so podatki prejeti iz naprave, povezane z internetom stvari (koda ključa in koda za zaklepanje), vrnjen rezultat (ena ali nič, odvisno od tega, ali je rezultat resničen ali napačen) in izvedena je majhna obdelava informacij, ki je sestavljena iz primerjave rezultatov, pridobljenih pri pregledu baze podatkov, s tistimi, ki jih pošlje vozlišče IoT.

    V prejšnjem primeru se funkcija hexdec uporablja za pridobivanje decimalne številke iz besedila, ki predstavlja šestnajstiško številko in je tisto, ki ga pošlje naprava IoT. Dodatna prednost uporabe te funkcije je, da se z dodajanjem kode izognete napadu, kot je bilo razloženo prej SQL zlonamerno za podatke zahteve POST.

    po Komentar

    Morda ste zamudili