Autor | Zpráva | ||
---|---|---|---|
Stepanka Profil * |
#1 · Zasláno: 14. 8. 2008, 07:50:04
Ahoj,
prosím, potřebovala bych poradit. Mám jeden SELECT a INSERT, nějak takto: $query4 = "SELECT bug_id FROM custom_field_string_table WHERE bug_id = '".$regs[1]."' //REGS[1] JE POLE IDcek ZASKRTNUTYCH V CHECKBOXU VE FORMU GROUP BY bug_id"; $result4 = db_query ($query4); while ($row4 = db_fetch_array ($result4)) { $bugs_id[] = $row4['bug_id']; } foreach ($bugs_id as $key => $val) { $query7 = "INSERT INTO custom_field_string_table VALUES (8, '".$val."', 'ANO')"; $result7 = db_query ($query7); } Vždycky mi to udělá to, že INSERT se provede jen pro první hodnotu $val. Přitom, když je to v cyklu, měl by se provést pro všechny. Chci vložit více řádků najednou (tolik kolik jich je v poli $bugs_id). V čem je chyba, nevíte prosím někdo? Děkuju moc. |
||
nightfish Profil |
#2 · Zasláno: 14. 8. 2008, 08:46:57
„Vždycky mi to udělá to, že INSERT se provede jen pro první hodnotu $val. Přitom, když je to v cyklu, měl by se provést pro všechny. Chci vložit více řádků najednou (tolik kolik jich je v poli $bugs_id). V čem je chyba, nevíte prosím někdo?
“ echo count($bugs_id); // vypíše počet záznamů v $bugs_id a ty si zkontroluješ, že vypíše číslo větší než 1 - umístit před ten foreach echo mysql_error(); // vypíše chybu, ke které došlo při dotazu - umístit za $result7 = db_query ($query7); |
||
Stepanka Profil * |
#3 · Zasláno: 14. 8. 2008, 08:58:54
nightfish
Děkuju, zkusila jsem to.. echo count($bugs_id); vypíše 1. Zrovna tu mám asi 8 checkboxů. Podle toho kolik jich zaškrtnu, tolik jedniček se vypíše. Když před foreach zkusím dát print_r ($bugs_id);, vypíše se to pole takto: Array ( [0] => 30 ) Array ( [0] => 35 ) Array ( [0] => 37 ) Array ( [0] => 38 ) Array ( [0] => 39 ) Array ( [0] => 40 ) Array ( [0] => 45 ) Array ( [0] => 46 ) Array ( [0] => 47 ) A když dám za db_query echo mysql_error();, vypíše to chybu "Previous non-fatal errors occurred. Page contents follow." |
||
Stepanka Profil * |
#4 · Zasláno: 14. 8. 2008, 09:02:11
nightfish
Ale když dám do cyklu foreach echo $val; a zaškrtnu všechny checkboxy, vypíše se 303537383940454647, což je dobře. Jsou to v řadě za sebou všechny ID, které potom potřebuju uložit v INSERTu. |
||
nightfish Profil |
#5 · Zasláno: 14. 8. 2008, 09:03:02
„A když dám za db_query echo mysql_error();, vypíše to chybu "Previous non-fatal errors occurred. Page contents follow."“
to je málo, určitě to toho vypíše víc... je potřeba sem poslat všechno |
||
Stepanka Profil * |
#6 · Zasláno: 14. 8. 2008, 09:05:58
nightfish
Nic víc to nevypíše. Jsou to skripty systému mantis, nevím jestli nemají ošetřené,a by to víc nevypisovalo. Pak už se vypíše jenom APPLICATION ERROR #401 CHYBA: Dotaz v databázi se nezdařil. |
||
Stepanka Profil * |
#7 · Zasláno: 14. 8. 2008, 09:12:58
Nebo by to mělo jít zjednodušit takhle, ale taky to vyhodí vždycky chybu:
$query4 = "SELECT bug_id FROM custom_field_string_table WHERE bug_id = '".$regs[1]."' GROUP BY bug_id"; $result4 = db_query ($query4); while ($row4 = db_fetch_array ($result4)) { $query7 = "INSERT INTO custom_field_string_table (field_id, bug_id, value) VALUES (8, '".$row4['bug_id']."', 'ANO')"; $result7 = db_query ($query7); } Žádný foreach by tam ani nebyl potřeba. Vůbec nerozumím tomu, co mu vadí.. |
||
nightfish Profil |
#8 · Zasláno: 14. 8. 2008, 09:31:06
Stepanka
ještě jeden pokus... zkus nahradit $result7 = db_query ($query7); za $result7 = mysql_query($query7); echo mysql_error(); (to by mohlo veškeré ošetření mantisu "obejít" a říct ti, v čem je problém) |
||
Stepanka Profil * |
#9 · Zasláno: 14. 8. 2008, 09:36:13
nightfish
Jo, fakt. Při zaškrtnutí jednoho checkboxu to vypsalo Duplicate entry '8-30' for key 1 Při zaškrtnutí všech Duplicate entry '8-30' for key 1Duplicate entry '8-35' for key 1Duplicate entry '8-37' for key 1Duplicate entry '8-38' for key 1Duplicate entry '8-39' for key 1Duplicate entry '8-40' for key 1Duplicate entry '8-45' for key 1Duplicate entry '8-46' for key 1Duplicate entry '8-47' for key 1 víš z toho něco? Já ne.. |
||
nightfish Profil |
#10 · Zasláno: 14. 8. 2008, 09:37:44
takže v tabulce je nějaký unikátní klíč (asi složený na sloupcích field_id a bug_id) a hodnoty s uvedenou kombinací obou sloupečků už v tabulce jsou a proto nelze přidat další...
|
||
Stepanka Profil * |
#11 · Zasláno: 14. 8. 2008, 09:42:32
Aha, to je pravda.. U některých ID je v tabulce uvedeno (field_id, bug_id, value) => (8, ČÍSLO ID, NE). A já potřebuju tu hodnotu "NE" změnit na "ANO". Jenže pomocí UPDATE to nejde, protože existují i IDčka, která ten řádek (8, ČÍSLO ID, ANO/NE) nemají vůbec a je potřeba ho celý nově vložit.
Sakra jak to teď zkombinovat.. |
||
nightfish Profil |
#12 · Zasláno: 14. 8. 2008, 09:46:04
mohlo by jít použít
$query7 = "INSERT INTO custom_field_string_table (field_id, bug_id, value) VALUES (8, '".$row4['bug_id']."', 'ANO') ON DUPLICATE KEY UPDATE value = 'ANO'"; |
||
Stepanka Profil * |
#13 · Zasláno: 14. 8. 2008, 09:57:15
nightfish
Aha, zatím moc moc děkuju, tohle vypadá dobře. |
||
Časová prodleva: 16 let
|
0