Autor Zpráva
milbr
Profil *
Přeji pěkný večer, chtěl bych moc poprosit o radu, níže mám script, který mi vypíše názvy sloupečků v tabulce. Potřeboval bych pomocí těchto názvů sestavit příkaz INSERT INTO. Nějak mi to už nemyslí. Zkoušel jsem snad všechno.

Ještě jednou

$fields = mysql_list_fields("databaze", "tabulka", $spojeni);
                        $XPocetPoli = mysql_num_fields($fields); 
                        for ($i = 0; $i < $XPocetPoli; $i++)
                        {  $vyber = MySQL_Query("SELECT * FROM aktuality");
                           $sloupec = mysql_field_name($fields, $i);
                        
                           echo "$sloupec" ;
                        }      
                        mysql_query("INSERT INTO `databaze`.`tabuklka` values ( ????????? )" );  
milb
Profil *
Přeji pěkný den, omlouvám se, ale asi jsem se vyjádřil špatně. Chtěl bych proto ještě jednou poprosit o radu.
Jde mi o vypsání proměnné $sloupec (názvy sloupečků) do values. Zkoušel jsem
print_r($sloupec);
Takto se mi vypíšou i znaky, které nepotřebuji => /()

Ještě jednou moc děkuji

Milan
Tori
Profil
milb:
$sloupce = array();
for (..) {
  $sloupce[] = mysql_field_name($fields, $i);
}
echo implode(',', $sloupce);
milbr
Profil *
Tori:
Moc moc děkuju, posunul jsem se o kus dále, vše by fungovalo ale až na to že můžu vložit do db pouze čísla, pokud mám v textarea slovo tak se mi nezapíše do db, přitom když si vypíšu proměnnou sloupec tak je vše OK.

Všem moc děkuju
Milan

$fields = mysql_list_fields("databaze", "tabulka", $spojeni);
            $XPocetPoli = mysql_num_fields($fields); 
            for ($i = 0; $i < $XPocetPoli; $i++)
            {  $vyber = MySQL_Query("SELECT * FROM tabulka");
            $sloupec = mysql_field_name($fields, $i);
                          
            $name_sloupec[] = mysql_real_escape_string($$sloupec);
                          
            }      
            mysql_query("INSERT INTO `sqsfiber`.`aktuality` values (".implode(', ', $name_sloupec).")");  
Tori
Profil
milbr:
Z [#1] nebylo zřejmé, že ukládáte do db formulářová pole, jejichž názvy jsou shodné s názvy sloupců db. V tom případě chybí escapování vkládaných řetězců - buď můžete dát uvozovky/apostrofy okolo hodnoty na ř. 7 (ve [#4]), anebo až při tom implodu. První varianta je asi přehlednější.

Doufám správně, že register_globals máte vypnuté?
milbr
Profil *
Tori:
Děkuji za radu, bohužel když dám do uvozovek
$$sloupec
tak se mi do DB nezapíše nic. Výše uvedený script funguje ale nevím z jakého důvodu se do db zapíší pouze čísla. Nikde v předávaných proměnných nevidím intval a v db mám nastaveno id(int) umisteni(int) datum(date) ostatní sloupce jsou buď varchar nebo text.

Moc děkuji všem za pomoc.

Pěkný den Milan
panther
Profil
milbr:
vypiš si mysql_error(). Pokud chceš do DB zapisovat nečíselné hodnoty, musí být obaleny apostrofy. Bez apostrofů lze vkládat jen čísla.
milbr
Profil *
panther:
Díky moc za vysvětlení, to že jdou vkládat pouze čísla jsem nevěděl. Mohl by jsi mi prosím poradit kam mám aplikovat apostrofy nebo přímo upravit script? Zkoušel jsem už snad všechno.


Děkuji a pěkný den všem Milan
Tori
Profil
milbr:
když dám do uvozovek $$sloupec tak se mi do DB nezapíše nic
Uznávám, napsala jsem to nejasně. Ne
$name_sloupec[] = "$$sloupec";
, ale
$name_sloupec[] = "'".mysql_real_escape_string($$sloupec)."'";
Anebo u až u implode:
mysql_query("INSERT INTO `sqsfiber`.`aktuality` values ('".implode("', '", $name_sloupec)."')");
milbr
Profil *
Tori:
Moooooc děkuji, vše je OK

Vše vyřešeno, přeji pěkný večer a děkuji všem Milan

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: