Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  mysql+rida+php märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Skalle
HV vaatleja

liitunud: 19.11.2013




sõnum 19.11.2013 03:56:47 mysql+rida+php vasta tsitaadiga

Olen seiemaani kõik vastused veebist leidnud. Sedakorda on tõsine probleem. Ei oska mysql tabeli ühte rida välja näidata. Panen selle koodijupi ka ligi:
$kysi = mysql_query("SELECT * FROM andmed WHERE Number = '".$_POST['number']."'")or die(mysql_error());
$tulem = mysql_query($kysi);
while ($rida = mysql_fetch_row($tulem));
{
echo $rida;
}
Kuda edasi minna, vajalik oleks, et tabeli rida läheks erinevate html inputide vahele laiali. Samas pole see päring mingit tulemust andnud, isegi mitte errorit. Otse konsooli kaudu tehtud päring näitab seda, mida on küsitud.
Ette tänades Skalle.
tagasi üles
vaata kasutaja infot saada privaatsõnum
raitl
HV veteran


liitunud: 20.01.2002



Autoriseeritud ID-kaardiga

sõnum 19.11.2013 08:28:00 vasta tsitaadiga

WHILE loopi tingimuse taga on sul üleliigne semikoolon.

$kysi = mysql_query("SELECT * FROM andmed WHERE Number = '".$_POST['number']."'")or die(mysql_error());
$tulem = mysql_query($kysi);
($rida = mysql_fetch_row($tulem))
{
echo $rida;
}
Kommentaarid: 166 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 147
tagasi üles
vaata kasutaja infot saada privaatsõnum
limp
HV Guru
limp

liitunud: 11.08.2003




sõnum 19.11.2013 09:43:10 vasta tsitaadiga

ja $rida on array, seega tuleks see print_r($rida);
_________________
Ärgake lapsed, maailm on hädaohus

Windows keskkond on nagu li*s - kõik teda ke*ivad aga keegi teda ei armasta!
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 52
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 19.11.2013 18:15:23 vasta tsitaadiga

Viga on sul päris alguses
php:
  1.  
  2. //siin juba teed päringu
  3. $kysi = mysql_query("SELECT * FROM andmed WHERE Number = '".$_POST['number']."'")or die(mysql_error());
  4. //ja nüüd üritad teha päringut eelmise päringu resultset'ga
  5. $tulem = mysql_query($kysi);
  6.  
  7. while ($rida = mysql_fetch_row($tulem));
  8. {
  9.   echo $rida;
  10. }
  11.  

Õige oleks
php:
  1.  
  2. $kysi = "SELECT * FROM andmed WHERE Number = '".$_POST['number']."'";
  3. $tulem = mysql_query($kysi) or die(mysql_error());
  4.  
  5. while ($rida = mysql_fetch_row($tulem))
  6. {
  7.   print_r( $rida);
  8. }
  9.  


Olenevalt sellest mida soovid, ei pruugi mysql_fetch_row teha päris seda mida soovid. Vaata ka funktsioone mysql_fetch_array ja mysql_fetch_assoc

Ja nüüd veel üks ohtlik koht:
$kysi = "SELECT * FROM andmed WHERE Number = '".$_POST['number']."'";

Mis siis saab kui kasutaja sisestab numbriks näiteks '#
Toksi googlesse näiteks sql injection ja saad teada, mida kurja pahatahtlik kasutaja sellise lahendusega teha saab.
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
Skalle
HV vaatleja

liitunud: 19.11.2013




sõnum 22.11.2013 13:53:29 vasta tsitaadiga

Tänud vastamast, sain selle kenasti tööle. Kuna kasutajate ring on suhteliselt väike ja ligipääs parooliga kaitstud, siis ma eriti ei muretse, mida nad sinna sisestavad. Uue tellimuse number genereeritakse automaatselt. See, mille kohta ma küsisin, on tellimuse muutmise, st. andmete lisamise koht.
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 22.11.2013 15:13:43 vasta tsitaadiga

Ja kasutaja&parooli kontrollimine on lahendatud kuidas? Kui seda samuti SQL injection abil rünnata saab, siis saab ka ilma kasutaja ja paroolita sisse icon_wink.gif Üldiselt soovitaksin sul siiski sisse harjutada kombe SQL-le mitte otse GET/POST päringuga sissetulevaid andmeid sisse sööta. Isegi kui see antud hetkel tõesti teab mis kriitiline koht pole, on näpukad tulevikus kerged tulema kui pole harjunud koodi ka selle pilguga vaatama, et mõni võib üritada rakendust ka mittesihipäraselt kasutada. Kõige lihtsamini saad oma koodi korda, kui uurid funktsiooni mysql_real_escape_string.
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  mysql+rida+php
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.