mboost-dp1

Skrive til MySQL-database fra andet system


Gå til bund
Gravatar #1 - Qw_freak
12. maj 2010 16:34
hey, er der nogen der kan hjælpe mig med at finde ud af hvordan jeg kan skrive in i en sql-database fra et andet os??

problemstilling:

Jeg har et stykke HW med en petalinux på som ikke er stor nok til at kunne håndtere en PHP server. Derfor er jeg nødt til at have en ekstern PHP server som en PHP-side loader fra, men det er petalinuxen som tager imod de info som jeg skal have skrevet ind i MySQL-databasen som PHP-siden skal fremvise!

Anyone????
Gravatar #2 - Corholio
12. maj 2010 16:36
Måske vha. noget XML / JSON (eller bare noget simpelt komma-separeret data) over en REST-baseret protokol?

Hvad er det for et stykke hardware?
Gravatar #3 - arne_v
12. maj 2010 16:59
#1

Hvis din MySQL konfigureres til at bruge TCP/IP sockets, så kan en ekstern PHP server da sagtens tilgå den.

Det er vel nærmest det mest almindelige at PHP og MySQL kører på forskellige servere.
Gravatar #4 - Qw_freak
12. maj 2010 18:16
Det er et Spartan3E kort som modtager data og beregner på dem fra en lille vindmølle, der er bare kun 64kbyte plads på den, så der er simpelthen ikke plads til at have andet end c-programmet og webserveren på, så der skal laves så de data der skal aflæses via en web-side kan tilgåes!

dataene skal hele tiden opdateres!

#3
Tror du at der kan blive plads til noget SQL på en petalinux der er så lille?
Gravatar #5 - arne_v
12. maj 2010 18:41
#4

Jeg opfattede det som:

Box #1 Box #2 Box #3
MySQL---------PHP----------browser

Siger du at det er:

Box #1 Box #2 Box #3
X---------------PHP&MySQL-----browser

?

Gravatar #6 - Qw_freak
12. maj 2010 19:24
arne_v (5) skrev:
#4

Siger du at det er:

Box #1 Box #2 Box #3
X---------------PHP&MySQL-----browser

?
ja! nemlig! :) kan jeg via et program skrevet i C sætte data ind i en MySQL database på en ekstern server?
Gravatar #7 - arne_v
12. maj 2010 19:34
#6

MySQL har et C API som er til at finde ud af. Specielt hvis du har brugt MySQL fra PHP.

Så sørg for at MySQL lytter på TCP port 3306 og så fyrer du bare SQL sætninger af.
Gravatar #8 - arne_v
12. maj 2010 19:38
arne_v (7) skrev:
MySQL har et C API som er til at finde ud af.


Start evt. her:
http://www.eksperten.dk/guide/206
Gravatar #9 - Bundy
18. maj 2010 07:12
Du kan også bare få programmet til at loade en url på php/mysql serveren også smide de ting der skal i databasen som parametre i urlen.
Gravatar #10 - Qw_freak
23. maj 2010 20:41
arne_v (8) skrev:
Start evt. her:
http://www.eksperten.dk/guide/206


i den guide bruger du en includer du en mysql.h fil, hvor finder jeg den, jeg har prøvet at smide samtlige .h filer fra min mysql mappe ind i include mappen, men det virker ikke!

edit: jeg har self prøvet at compile dit program inden kun med den ene mysql.h fil i include mappen! den kan godt finde filen, men i mysql.h er der andre includes, derfor smed jeg alle includesne i mappen!
Gravatar #11 - arne_v
23. maj 2010 21:50
#10

Du skal kun include den og så lade den include de andre.

Hvilke includes er det den ikke kan finde?
Gravatar #12 - Qw_freak
24. maj 2010 10:24
#11
Dem alle sammen, men jeg har ændret alle ' " ' i includesene til '< >' og det ser ud til at den så kan finde dem!

Foriøvrigt, tusind tak for hjælpen so far, det er pænt af dig/jer at sætte tid af til at hjælpe noobs som mig! :)

Gravatar #13 - kasperd
24. maj 2010 10:30
qw_freak (4) skrev:
Det er et Spartan3E kortder er bare kun 64kbyte plads på den
Tænk sig at der stadig findes enheder med så lidt RAM. Det må være en udfordring at overhovedet implementere en TCP stak på sådan en ting.

Er der allerede en fungerende TCP stak på den? Eller kommunikerer den på en anden måde?
Gravatar #14 - Qw_freak
24. maj 2010 10:34
det er der i petalinux'en tror også lige jeg fik lavet en tanketorsk der, der er 64mb, men den kan højst behandle et os på 12mb af gangen!

Vores problem er, at der ikke er plads til en MySQL og PHP-server på den, samtidig med at alt det andet device-drivers og lign hardware orinterede skal ligge på den også!
Gravatar #15 - kasperd
24. maj 2010 10:42
qw_freak (14) skrev:
det er der i petalinux'en tror også lige jeg fik lavet en tanketorsk der, der er 64mb, men den kan højst behandle et os på 12mb af gangen!
Med 64MB har du jo oceaner af plads. Du bør selvfølgelig ikke køre database serveren på den enhed, men du burde nemt kunne køre en SQL klient på den. Det er adskillige år siden jeg sidst har skrevet SQL klient kode, så råd om hvordan man gør det vil jeg overlade til andre.
Gravatar #16 - Qw_freak
24. maj 2010 11:51
jeg får en del af disse fejl når jeg compiler forespørgsels eksemplet fra
arne_v (8) skrev:
http://www.eksperten.dk/..
men får en del af disse fejl.

/cygdrive/c/Users/steven/Documents/NetBeansProjects/Windturbine/main.c:35: undefined reference to `_mysql_init'


problemet er at jeg sagtens kan finde funktionerne i headerfilerne via includesne, så de burde være der!
Gravatar #17 - arne_v
24. maj 2010 13:06
#16

Linker du med det rette lib?
Gravatar #18 - Qw_freak
24. maj 2010 13:33
arne_v (17) skrev:
#16

Linker du med det rette lib?


Det ved jeg ikke, hvis det skal gøres rigtig hvad skal jeg så gøre?
Gravatar #19 - arne_v
24. maj 2010 13:35
#18

Har du en libmysql.a og linker med den?
Gravatar #20 - Qw_freak
24. maj 2010 13:36
nej, ikke så vidt jeg kan se, skal den includes?
Gravatar #21 - arne_v
24. maj 2010 13:41
#20

1) sikre dig at du har en
2) link med den

re 2)

Den skal angives i den command line den IDE fyrer af (og det goeres ved at definere det i noget project settings) eller i makefile. Afhængig af hvordan du builder.
Gravatar #22 - Qw_freak
24. maj 2010 13:54
#21
jeg har ingen libmysql.a fil nogen steder på min pc! burde den ikke ligge i mysql mappen?
Gravatar #23 - arne_v
24. maj 2010 13:57
#22

Lav en som beskrevet i artiklen.

copy \mysql\lib\opt\libmysql.lib *.*
reimp -d libmysql.lib
dlltool -k -d libmysql.def -l libmysql.a
Gravatar #24 - Qw_freak
24. maj 2010 14:16
skal jeg skrive det i cmd?
Gravatar #25 - arne_v
24. maj 2010 14:18
#24

Ja. Tilrettet hvor dine ting ligger.
Gravatar #26 - arne_v
24. maj 2010 14:18
#lib

Har du checket at din cygwin ikke kommer med eller kan hente libmysql.a ?
Gravatar #27 - Qw_freak
24. maj 2010 14:31
den er der ikke i cygwin!

edit: det virker ikke de kommandoer i cmd, selvom filen er der! hvis jeg går helt frem til mappen den ligger i siger cmd at den ikke kan kopiere filen oveni den eksisterende fil, hvilket jo er naturligt nok, men bare en mappe tilbage, så gider den ikke finde den!
Gravatar #28 - themuss
24. maj 2010 14:47
#22 Du skal hente mysql-sourcen?
Gravatar #29 - Qw_freak
24. maj 2010 23:02
Arne_v

Kan jeg evt få dig til at forklare hvad der sker her?

sprintf(sqlcmd, "INSERT INTO t1 VALUES (%d,'%s')", i, "Dette er en test");
mysql_query(handle, sqlcmd);


den er fra http://www.eksperten.dk/guide/206 opdaterings
eksemplet

Jeg forstår godt MySQL commandoerne, men hvad er alt det andet adskildt med commaer, og hvad gør: mysql_query(handle, sqlcmd);
Gravatar #30 - arne_v
24. maj 2010 23:10
#29

sprintf = funktion som skriver til streng
sqlcmd = streng der skal skrives til
"INSERT INTO t1 VALUES (%d,'%s')" = format streng (%d er heltal %s er string)
i, "Dette er en test" = de variable som skal sættes ind for %d og %s
Gravatar #31 - arne_v
24. maj 2010 23:10
#29

mysql_query(handle, sqlcmd);

udfører queryen.
Gravatar #32 - Qw_freak
24. maj 2010 23:30
det vil sige printf skriver alt det efter det første komma ind i sqlcmd?

og hvad er handle?

duer det hvis %d er float, altså et kommatal?
Gravatar #33 - Qw_freak
24. maj 2010 23:43
vil dette virke?


sprintf(sqlcmd, "INSERT INTO `windturbine`.`production` ('%d') VALUES ('%s)", ID, size);


hvor ID = "Voltage";
og size er et kommatal, fx: 230,45
Gravatar #34 - arne_v
25. maj 2010 00:05
qw_freak (32) skrev:
det vil sige printf skriver alt det efter det første komma ind i sqlcmd?


Ja.

qw_freak (32) skrev:
og hvad er handle?


Connection.

qw_freak (32) skrev:
duer det hvis %d er float, altså et kommatal?


Kommatal er %f !
Gravatar #35 - arne_v
25. maj 2010 00:05
qw_freak (33) skrev:
og size er et kommatal, fx: 230,45


230,45 er to heltal adskilt af komma.

:-)

230.45 er et komma tal som kan udskrives med %f.
Gravatar #36 - Qw_freak
25. maj 2010 07:56
arne_v (35) skrev:
230,45 er to heltal adskilt af komma.

:-)

230.45 er et komma tal som kan udskrives med %f.


Arghhh, selvfølgelig... man blir da også klogere og klogere! :D
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login