Predem nedefinovaný počet při vkládání do db – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Predem nedefinovaný počet při vkládání do db – PHP – Fórum – Programujte.comPredem nedefinovaný počet při vkládání do db – PHP – Fórum – Programujte.com

 

tribalcz0
Super člen
26. 12. 2013   #1
-
0
-

ahoj nadpis je možná blbý ale mám problém potřebuji udělat třídu Insert která bude ve spojení s jinou třídou ukládat data do db háček je v tom že třídu insert budu využívat napříč celým webem a spojím třídu form a třídu insert a odešlu data do db ale v každeé tabulce bude neznámý počet  řádků 

Database::query('INSERT INTO `dotaz_wm` (/*ZDE MŮŽE BÝT TŘEBA 5 ŘÁDKŮ*/) VALUES (NOW(),?,?,?,?)', array(/* HODNOTY UŽIVATELSKÉHO VSTUPU*/));


a v dru 

Database::query('INSERT INTO `dotaz_wm` (/*ZDE MŮŽE BÝT TŘEBA 8 ŘÁDKŮ*/) VALUES (NOW(),?,?,?,?,?,?,?)', array(/* HODNOTY UŽIVATELSKÉHO VSTUPU*/));

hém případě to může vypadat takto

může my někdo pomoci jak to udělat

Nahlásit jako SPAM
IP: 178.209.131.–
Paja2
~ Moderátor
+2
Věrný člen
26. 12. 2013   #2
-
0
-
Nahlásit jako SPAM
IP: 31.134.216.–
Kit+15
Guru
26. 12. 2013   #3
-
0
-

#2 Paja2
 Dá se to napsat i trochu jednodušeji:

<?php
$data = array(
    "jmeno"      => "'" . mysql_real_escape_string($_POST["jmeno"]) . "'",
    "prijmeni"   => "'" . mysql_real_escape_string($_POST["prijmeni"]) . "'",
    "cislo_bot"  => (int) $_POST["cislo_bot"],
);
mysql_query("INSERT INTO uzivatel (" . implode(", ", array_keys($data)) . ") VALUES (" . implode(", ", $data) . ")");
?>

ale stejně bych dal přednost PDO a prepared statements.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
tribalcz0
Super člen
27. 12. 2013   #4
-
0
-

no ja pdo pouzivam prave proto se ptam napadlo mne to resit pooci tokenu ale nevim jak na to v pripade ze vyplnuji pevne hodnoty tak vim

např.:

Database::query('INSERT INTO `dotaz_wm` (`date`, `nick`, `subject`, `messages`) VALUES (NOW(),?,?,?)', array($nick, $subj, $msg));

ale mimo jiné budu třídou předávat i název db

Nahlásit jako SPAM
IP: 178.209.131.–
Kit+15
Guru
27. 12. 2013   #5
-
0
-

#4 tribalcz 

Můžeš to udělat mírnou oklikou přes array:

<?php
$table = "uzivatel";
$data = array(
    "jmeno"      => $_POST["jmeno"],
    "prijmeni"   => $_POST["prijmeni"],
    "timestamp"  => array("NOW()"),
    "cislo_bot"  => $_POST["cislo_bot"],
);
$keys = implode(", ", array_keys($data));
$values = implode(", ", array_map(function($sloupec) {
    return is_array($sloupec)?$sloupec[0]:'?';
}, $data));

$prep = $pdo->prepare("INSERT INTO $table ($keys) VALUES ($values)");
$prep->execute(array_values(array_filter($data, 'is_scalar'));
?>
Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý