Pääset tietokantaan PHP-ohjelmointikielellä

Pääset tietokantaan PHP-ohjelmointikielellä

Pääset tietokantaan PHP-ohjelmointikielellä

Sisällysluettelo

    IoT-verkkopalvelinHTTP POST IoT -verkkopalvelinMySQL-tietokanta. IoT-verkkopalvelinPHP-kielinen IoT-verkkopalvelin

    Tässä viimeisessä artikkelissa sarjassa Verkkopalvelimen käyttäminen esineiden Internetiin yhdistetyistä laitteista olevien tietojen tallentamiseen, selittää kuinka tallennetaan tietokantaan MySQL tiedot, jotka IoT-solmut lähettävät HTTP POST -pyyntöjä tekevälle palvelimelle. Tämän artikkelin, koko blogin lukijat eivät ehkä ole erityisen perehtyneet ohjelmointiin PHP kieli mutta varmasti kyllä ​​ohjelmoinnin kanssa mikro-ohjaimet kielissä C o C + + joten, lukuun ottamatta joitain yksityiskohtia, kuten dollarimerkin ($) edelle muuttujia, voit seurata esimerkkejä ilman lisäselityksiä, koska ne on tehty noudattaen hyvin neutraalia ohjelmointityyliä, joka ei ole erityistä PHP.

    Tallenna tiedot tietokantaan

    Kuten artikkelissa selostetaan IoT-tietojen tallennus tekemällä HTTP POST -pyyntöjä verkkopalvelimelle, otsikoiden lopussa POST-pyynnön runko sisältää tiedot, jotka lähetetään palvelimelle. Yleisin tapa lähettää nämä tiedot palvelimelle on tekstimuodossa, koska se on helpompi analysoida jopa "manuaalisesti". Kun palvelimelle lähetettävä data on monimutkaista, se on varmasti kätevää jäsentää esimerkiksi muotoon XML o JSON. Tavanomaisessa web-palvelimen käytössä esineiden Internetiin liitetyistä laitteista tulevien tietojen hallintaan ei ole yleistä tarvita tietorakennetta, joten on normaalia lähettää ne pelkkänä tekstinä muodossa variable=valor.

    Seuraavan esimerkin HTTP POST -pyynnössä resurssia (yleensä verkkosivu) /iot/grabar_temperatura pyydetään polaridad.es-palvelimelta ja lähetetään kolme muuttujaa: ne, tp ja cr, jotka vastaavasti sisältävät arvot " 12", "10.26 » ja «2.18» On myös tärkeää muistaa, että otsikot erotetaan tiedoista tyhjällä rivillä.

    Seuraavan koodin lopullinen tavoite PHP lähetetään tietokantapalvelimelle MySQL järjestys SQL:

    jolla luodaan uusi tietue (INSERT)
    lämmitystietokannassa (INTO calefacciones)
    määrittämällä kenttiin (numero_estancia,temperatura,corriente)
    arvot, jotka vastaavat HTTP POST -pyyntöä VALUES (12, 10.26, 2.18)

    Yhteys tietokantaan tehdään toiminnolla mysqli_connect muodon mukaan: mysqli_connect($servidor,$usuario,$clave,$base_datos) joka palauttaa osoittimen yhteysobjektiin ja joka käyttää muuttujia, jotka määrittävät pääsyn (kuten käyttäjä, salasana...) ja jotka on aiemmin määritetty tulevaa hypoteettista käyttöä varten komentosarjassa.

    Toimintoa käytetään tunnistamaan, onko yhteys onnistunut mysqli_connect_errno() joka palauttaa mahdollisesti tapahtuneen virhenumeron tai nollan (epätosi), jos yhteys muodostettiin oikein. Virheistä ilmoittamiseksi HTTP-pyynnön tekevä sovellus vastaa arvolla nolla, tässä tapauksessa ohjelma, joka suoritetaan µC IoT-solmusta.

    Ennen kuin lisäät tekstiin, joka on tallennettu $consulta_sql jonka kanssa tilaus laaditaan SQL joka lähetetään tietokantapalvelimelle, POST-pyyntömuuttujiin saapuneet tiedot esikäsitellään vähintään, jotta vältytään SQL-injektio. Edellisessä esimerkissä muunnos vastaavaan tietotyyppiin on pakotettu (int) (kokonaisluku) tai (float) (liukuluku desimaali), mikä riittäisi poistamaan mahdollisen haitallisen koodin, joka on lisätty pyyntötietoihin Web-palvelin.

    Kuten voidaan nähdä, PHP kieli Pistemerkkiä (.) käytetään ketjuttamaan järjestyksen muodostavat tekstit SQL tai piste- ja yhtäläisyysmerkkioperaattori (.=) lisätäksesi tekstin sen oikealle puolelle, joka jo tallentaa muuttujan, ja lainausmerkkiä (') käytetään myös tekstivakioiden, ei vain merkkien, liittämiseen. Vaikka tässä tapauksessa voidaan käyttää myös lainausmerkkejä («), in PHP kieli käytetään sisällön käsittelemiseen, esimerkiksi sisällyttämällä muuttujat tekstiin muotoon $texto="Me llamo $nombre"; vaihtoehtona formaatille $texto='Me llamo '.$nombre; mahdollistaa myös yhden tyyppisten lainausmerkkien sisällyttämisen toiseen lainausmerkkeihin ilman pakomerkkejä, kun kaksoiskappaleet vuorottelevat sinkkujen sisällä tai sinkkuja kaksoiskappaleiden sisällä, kuten tehtävässä $texto='esto no hay que "escaparlo" en PHP';.

    Suorittaaksesi kyselyn palvelimelle MySQL toimintoa käytetään mysqli_query muodossa mysqli_query($conexion,$consulta_sql) joka ottaa parametreiksi objektiyhteyden tietokantaan ja tekstin tilauksen kanssa SQL joka on sävelletty.

    Toiminto mysqli_query($conexion,$consulta_sql) palauttaa kohdistinobjektin, jota voidaan käyttää palautettujen tietojen läpikäymiseen tarvittaessa tai, kuten yllä olevassa esimerkissä, saadakseen tietoja operaatiosta, erityisesti saadakseen selville toiminnon taulukossa luomalle uudelle tietueelle osoitetun indeksin " lämmittimet" toiminnolla mysqli_insert_id($conexion)

    Palauttama arvo mysqli_query($conexion,$consulta_sql) voi arvioida epätosi loogisessa operaatiossa määrittääkseen, että virhe on tapahtunut. Edellisessä esimerkissä sitä käytetään palauttamaan, kuten yhteysvirheen tapauksessa, nolla sovellukselle, joka tekee POST-pyynnön. Tällä tavalla ohjelma palauttaa nollaa suuremman luvun, joka edustaa uuden tietueen indeksiä, jos toiminto on oikea, tai nollan, jos toiminto tuottaa virheen.

    Tietokantayhteydelle osoitettujen resurssien vapauttamiseksi se "suljetaan" toiminnolla mysqli_close($conexion)

    Lue tiedot tietokannasta

    Paitsi arkkitehtuurissa sumulaskenta Useimmat IoT-solmut rajoittuvat lähettämään anturiensa keräämät tiedot palvelimelle, eli palvelimelle Web-palvelin Se kommunikoi heidän kanssaan vain tallentaakseen tietoja, joten edellisessä esimerkissä suuri osa tässä sovelluksessa esiin tulevista tapauksista on jo ratkaistu. Seuraava askel voisi olla verkkosivuston luominen, joka näyttää esineiden Internetiin yhdistettyjen laitteiden valvomat tiedot. käyttöliittymä joka ei ole tässä opetusohjelmasarjassa käsitellyn asian ulkopuolella.

    Mitä voi tapahtua, on se, että IoT-solmulla on tietty vuorovaikutus ja se käyttäytyy eri tavalla historiallisten tietojen perusteella tai ennakoi mahdollisuuden muuttaa käyttäytymistään palvelimelta saapuvan konfiguraation mukaan tai jopa solmu on näyttö, joka näyttää kaavion. äskettäin seurattujen tietojen kanssa verrattuna aikaisempina päivinä hankittuihin tietoihin. Kaikissa näissä tilanteissa on myös mielenkiintoista pystyä lukemaan tietoja palvelimelta MySQL kautta Web-palvelin kuten on havainnollistettu seuraavassa esimerkissä, joka simuloi luettelon saamista hälytystilojen päivämääristä, jotka määritetään hetkillä, jolloin lämpötila ylitti 40 °C

    Yllä olevassa esimerkissä tietokannan kyselyyn käytetään komentoa SQL SELECT perusmuodon mukaan SELECT campos FROM tabla WHERE condición ORDER BY campo DESC ainoana erikoisuutena on funktioiden lisääminen päivämääräkenttään DAY, MONTH, YEAR y TIME saadaksesi päivän, kuukauden numeron, vuoden ja kellonajan erikseen. Edellytyksenä on, että lämpötila on suurempi kuin 40.0 ja se järjestetään päivämääräkentän avulla korkeimmasta (nykyisin) alimpaan (vanhimpaan) osoittaen sen lausekkeen kanssa DESC

    Selaa kyselyn silmukasta palauttamia arvoja for funktiota käytetään tunnetulla mittasuhteella mysqli_num_rows($resultado) joka ilmaisee löydettyjen tietueiden määrän. Toiminnon kanssa mysqli_data_seek($resultado,$numero_resultado) tuloskohdistin voidaan siirtää tiettyyn silmukkalaskurin ilmaisemaan kohtaan for, $numero_resultado, esimerkissä.

    Toimintoa käytetään tallentamaan vektoriin ne tietueen kentät, joihin tuloskursori osoittaa mysqli_fetch_row($resultado) joka on määritetty muuttujalle $registro joita käytetään myöhemmin muodostamaan lause, jossa on eri arvoja, ja niitä käytetään niiden indeksien avulla.

    Kun kaikki arvot on käyty läpi, kyselytulokselle määritetyt resurssit vapautetaan SQL toiminnolla mysqli_free_result($resultado)

    Käsittele tietokannan tiedot. Vertaa arvoja.

    Joissain tilanteissa tietojenkäsittely on kätevää keskittää palvelimelle, vaikka se olisi mahdollista tehdä IoT-solmuissa tyylillä sumulaskenta. Seuraavassa esimerkissä simuloituja syitä tähän ovat turvallisuus; Solmulla on tietoa avaimestaan ​​(lukosta) ja pyynnöstä (avaimesta), mutta se ei tiedä, onko tarkoituksenmukaista antaa tietä molempien yhdistelmälle, joten sen on otettava yhteyttä palvelimeen, joka tekee päätöksen ja ilmoittaa solmulle vastaamalla nollaksi (osoittaakseen epäonnistuneen vertailun) tai yhden (osoittaakseen vertailun onnistumisesta) tietokantaan tehdyn kyselyn tuloksen perusteella.

    Tällä tekosyyllä näet esimerkin, jossa esineiden Internetiin yhdistetystä laitteesta vastaanotetaan tietoja (avainkoodi ja suojakoodi), palautetaan tulos (yksi tai nolla riippuen siitä, onko tulos tosi vai epätosi) ja Tiedoista suoritetaan pieni prosessointi, jossa verrataan tietokantaa tarkasteltaessa saatuja tuloksia IoT-solmun lähettämiin tuloksiin.

    Edellisessä esimerkissä heksadesimaalilukua käytetään desimaaliluvun saamiseksi tekstistä, joka edustaa heksadesimaalilukua ja on IoT-laitteen lähettämä. Tämän toiminnon lisäetu on välttää, kuten edellä on selitetty, hyökkäys lisäämällä koodia SQL haitallinen POST-pyynnön tiedoille.

    Post Comment

    Olet ehkä missannut