Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Muhatu
HV vaatleja

liitunud: 27.02.2003
|
31.08.2008 17:59:42
MySQL kala |
|
|
On tekkinud probleem järgneva jupiga koodis:
mysql_query("INSERT into ten_inimesed_uus set eesnimi='$eesnimi', synniaeg='$synniaeg', perenimi='$perenimi', telefon='$telefon', email='$email', regaeg='$regaeg'");
$p = mysql_query("SELECT * from ten_inimesed_uus where eesnimi='$eesnimi' and perenimi='$perenimi' and telefon='$telefon' and email='$email' and regaeg='$regaeg'");
$i = mysql_fetch_array($p);
mysql_query("INSERT into ten_osalemised_uus set inimese_id='" . $i["id"]."', yrituse_id='".$yrituse_id."', rolli_id='".$ir["id"]."'");
|
Kõik töötab plaanipäraselt välja arvatud inimese_id seadmine, mis jääb iga kord nulliks.
Kas see jupp: inimese_id='" . $i["id"]."' on mul valesti kirjutatud?
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
Valdars
HV veteran

liitunud: 22.02.2003
|
31.08.2008 18:17:50
|
|
|
Esimene asi- vaata järgi, mis sul seal $i sees üldse on.
|
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
44 |
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
31.08.2008 18:21:48
|
|
|
Ilgelt kena oleks ALATI kontrollida kas päring õnnestus või mitte ja kas tagastati vajalik hulk ridu.
_________________ ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
Celion
HV kasutaja

liitunud: 31.10.2002
|
31.08.2008 18:34:08
|
|
|
Ja kas selleks on mingi mõjuv põhjus, et mysql_insert_id() asemel see ID eraldi SELECT päringuga võtta? Huvi pärast küsin - mulle õpetati, et see funktsioon on suhteliselt kindlam moodus igasugu ID-de kättesaamiseks sellistel juhtudel.
_________________ Ostan Roger Zelazny "Amberi kroonikad" (soovitatavalt eesti keeles). |
|
Kommentaarid: 46 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
45 |
|
tagasi üles |
|
 |
Muhatu
HV vaatleja

liitunud: 27.02.2003
|
31.08.2008 18:51:21
|
|
|
Muutsin rea selliseks:
mysql_query("INSERT into ten_osalemised_uus set inimese_id='mysql_insert_id()', yrituse_id='".$yrituse_id."', rolli_id='".$ir["id"]."'");
|
ning mysql_insert_id() on õige väärtusega, aga tabelisse ta ikka ei jõua :S.
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
31.08.2008 19:11:47
|
|
|
kasuta funktsiooni mysql_error näiteks
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
nemu
HV vaatleja

liitunud: 22.01.2002
|
31.08.2008 20:23:25
|
|
|
Muhatu kirjutas: |
Muutsin rea selliseks:
mysql_query("INSERT into ten_osalemised_uus set inimese_id='mysql_insert_id()', yrituse_id='".$yrituse_id."', rolli_id='".$ir["id"]."'");
|
ning mysql_insert_id() on õige väärtusega, aga tabelisse ta ikka ei jõua :S. |
Loomulikult ei jõua, kui üritad inimese_id väljale kribada stringi 'mysql_insert_id()'
|
|
Kommentaarid: 12 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
11 |
|
tagasi üles |
|
 |
Muhatu
HV vaatleja

liitunud: 27.02.2003
|
31.08.2008 20:34:25
|
|
|
Hehe, korda sain, tekitasin uue muutuja, millele andsin mysql_insert_id() käsklusega väärtuse ning selle muutuja kirjutamine väljale õnnestus edukalt
Tänud kõikidele abistajatele
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
tanzanite
HV kasutaja

liitunud: 13.05.2006
|
02.09.2008 15:50:13
Re: MySQL kala |
|
|
Muhatu kirjutas: |
mysql_query("INSERT into ten_inimesed_uus set eesnimi='$eesnimi', synniaeg='$synniaeg', perenimi='$perenimi', telefon='$telefon', email='$email', regaeg='$regaeg'");
$p = mysql_query("SELECT * from ten_inimesed_uus where eesnimi='$eesnimi' and perenimi='$perenimi' and telefon='$telefon' and email='$email' and regaeg='$regaeg'");
$i = mysql_fetch_array($p);
mysql_query("INSERT into ten_osalemised_uus set inimese_id='" . $i["id"]."', yrituse_id='".$yrituse_id."', rolli_id='".$ir["id"]."'");
|
|
1) loodetavasti on need muutujad eelnevalt varjestatud.
2) päring ei kõlba lisatud rea ID saamiseks.
3) mysql_fetch_assoc oleks mõistlikum - aga erilist vahet pole.
4) antud tegevus karjub transaktsiooni järgi.
5) puudub veakontroll.
Celion kirjutas: |
Ja kas selleks on mingi mõjuv põhjus, et mysql_insert_id() asemel see ID eraldi SELECT päringuga võtta? Huvi pärast küsin - mulle õpetati, et see funktsioon on suhteliselt kindlam moodus igasugu ID-de kättesaamiseks sellistel juhtudel. |
Mitte kindlam - vaid ainuke moodus. (vastuvaidlejaid peksan selgitusteta niikaua kui nõustutakse )
|
|
tagasi üles |
|
 |
karu
HV kasutaja
liitunud: 08.08.2002
|
02.09.2008 16:02:58
Re: MySQL kala |
|
|
tanzanite kirjutas: |
3) mysql_fetch_assoc oleks mõistlikum - aga erilist vahet pole. |
tegelikult siin see 'kala' ongi. $i[0] vs $i['id']
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
02.09.2008 16:11:10
|
|
|
karu, tegelikult default asendis annab mysql_fetch_array nii numbri kui nime vasted
tsitaat: |
result_type
The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and the default value of MYSQL_BOTH |
mysql_fetch_row on see, mis annab vaid numbrilise array
küll aga on mysql_fetch_assoc() või siis mysql_fetch_array(, MYSQL_ASSOC) mälusäästlikumad, kui on teada et nimelist arrayd soovitakse vaid
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
maxorator
HV kasutaja
liitunud: 30.08.2006
|
02.09.2008 17:14:59
|
|
|
Vastupidi, numbriline sorteerimine on kiirem ja mälusäästlikum sest andmed saab otse indeksi kaudu kätte ning eraldi key väljaga mässamist ei ole ning seda ei talletata. Nimelise puhul iga kord, kui sa seda kasutad, otsib ta "võtmed" läbi, et leida vajaliku nimega võti.
mysql_fetch_row() on ka kasulik seetõttu, et seda saab kasutada koos list() funktsiooniga.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
02.09.2008 19:34:46
|
|
|
maxorator, jah, loomulikult on MYSQL_NUM kiirem kui MYSQL_BOTH ja MYSQL_ASSOC, kuid kui on soov kasutada siiski nimede järgi massiivist asju, siis on mõttekam MYSQL_ASSOC, kuna see on mälusäästlikum kui MYSQL_BOTH
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
tanzanite
HV kasutaja

liitunud: 13.05.2006
|
03.09.2008 13:24:46
|
|
|
*_row mälusäästlikus vs *_assoc on reeglina ebaoluline. Märksa olulisem on koodi loetavus / muudetavus. Mingid maagilised veeru numbrid mis on jäigalt seotud sellega mis järjekorras väljad olid päringus on väga paha mõte. Vastuvaidlejaid hakkan selgitusteta nõustumiseni nüpeldama :p
*_assoc vs *_array(BOTH) on tõesti ainult mäluvahe ... _assoc kasuks.
maxorator kirjutas: |
Vastupidi, numbriline sorteerimine on kiirem ja mälusäästlikum sest andmed saab otse indeksi kaudu kätte ning eraldi key väljaga mässamist ei ole ning seda ei talletata. Nimelise puhul iga kord, kui sa seda kasutad, otsib ta "võtmed" läbi, et leida vajaliku nimega võti. |
Vale. PHP ei toeta "tavamõistes" arrayd => map all the way.
Proovi ise:
$x=array();
$x[1]='a';
$x[3]='b';
$x[2]='c';
print_r($x); |
|
|
tagasi üles |
|
 |
|