Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 15. 7. 2008, 23:23:44
Zdravím chtěl bych si uložit data do databáze s převedením vkládaných znaků na malé (pro jednodušší vyhledávání)
ale narazil jsem na problém s převodem pomocí strtolower, vím že se operátory spojují tečkou ale jak to udělat, když je v MySQL příkazu po vklad čárka? Napadlo mne to vložit do pole, to pak převést na malé a poté to vložit do DB ale nevím, zda by to bylo možné, nebo jaké by bylo "nejelegantnější" řešení? Děkuji za rady Zde jé kod toho vkladu: <?php include("db_connect.php"); //Starting app with verify connect to database $interpret = $_POST['interpret']; $album = $_POST['album']; $styl = $_POST['styl']; $rok_vydani = $_POST['rok']; $puvod = $_POST['puvod']; $zaloha = $_POST['zaloha']; $kde_naleznu = $_POST['umisteni']; $zmenseni = strtolower($interpret.$album.$styl); //Tady jsem myslel, ze bych prevedl na male znaky (nefunkcní) $sql = "INSERT INTO seznam VALUES('$id','$interpret','$album','$styl','$rok_vydani','$puvod','$za loha','$kde_naleznu')"; $vysledek_vlozeni = mysql_query($sql); if (!$vysledek_vlozeni) die('Nepodarilo se vlozit novy radek.'); ?> |
||
Str4wberry Profil |
#2 · Zasláno: 15. 7. 2008, 23:41:07
$sql = "INSERT INTO seznam VALUES('".strtolower($id)."', …)"; Nejelegantnější by bylo asi to pole — pro sestavení dotazu použít tohle. A implode u „VALUES“ obalit funkcí strtolower. |
||
gardener Profil |
#3 · Zasláno: 15. 7. 2008, 23:56:55
Takže by to bylo tak, že bych prvně nadefinoval sloupce a pak vkládané hodnoty?Tj. nějak takto?
<?php $set = array(); $set["interpret"] = "'$_POST[interpret]'"; $set["album"] = "'$_POST[album]'"; $set["styl"] = "'$_POST[styl]'"; $set["rok"] = "'$_POST[rok]'"; $set["puvod"] = "'$_POST[puvod]'"; $set["zaloha"] = "'$_POST[zaloha]'"; $set["umisteni"] = "'$_POST[umisteni]'"; $sql =mysql_query("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .strtolower. implode(", ", $set) . ")"); ?> |
||
Str4wberry Profil |
#4 · Zasláno: 16. 7. 2008, 00:01:27 · Upravil/a: Str4wberry
Skoro ano. Jen musíte to implode obalit funkcí strtolower. Tedy:
$sql =mysql_query("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .strtolower(implode(", ", $set)) . ")"); |
||
gardener Profil |
#5 · Zasláno: 16. 7. 2008, 00:05:49
Ach so:)Díky moc za radu, jdu to vyzkoušet...a ještě mě tak napadá, kdybych chtěl ten insert form vkládat proti zadání nějakým nežádoucích znaků (ne že by to zde u seznamu hrozilo ale tím že to bude se nic nezkazí) tj.pomocí HTMLspecialchars, tak to by se také použilo při vkládání společně s strtolower?
|
||
Str4wberry Profil |
#6 · Zasláno: 16. 7. 2008, 00:20:52
Funkci htmlspecialchars můžete použít klidně až při výpisu (někdy je to dokonce nezbytné/lepší). Pokud ji chcete aplikovat již při INSERTU, stačí jí zase obalit ošetřovaný řetězec. Možná se také podívejte na něco o funkcích. A funkce, které chcete používat, si můžete vyhledat v PHP manuálu — a z příkladu se snažit pochopit, jak fungují.
Použití htmlspecialchars na $_POST['rok'] bude vypadat takto: $set["rok"] = "'".htmlspecialchars($_POST['rok'])."'"; |
||
gardener Profil |
#7 · Zasláno: 16. 7. 2008, 00:21:48
Ješte jsem si všimnul jedné věci,pokud použiji mysql_query před vložením do DB skript neprojde, pokud ho ovšem odstraním a přesunu ověření jako další příkaz celé to funguje..
Ještě by mě zajímalo, jeslti je chyba, pokud si nechávám inkrementovat id záznamu ale při vkládání ho do db nevkládám..dříve jsem to dělal tak, že jsem ho vždy vkládal, ale teď když se vkládá automaticky? |
||
gardener Profil |
#8 · Zasláno: 16. 7. 2008, 00:27:21
O.K děkuji ještě jednou za rady..
|
||
Časová prodleva: 16 let
|
0