Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 21. 1. 2009, 23:46:42
Zdravím
Vkládám dta do DB ale narazil jsem na problém se spojováním řetězců, resp. kód mám už asi správně ale někde mi přebývají apostrofy, či uvozovky, ale netuším už kde. Mysql_error my vrátí jen zápis vkládaných prvků , bez syntaxe insert into...tak jestli problém bude tam? <?php include("db_connect.php"); //Starting app with verify connect to database $set = array(); //Here is array for values from form $set["interpret"] = $_POST['interpret']; $set["album"] = $_POST['album']; $set["styl"] = $_POST['styl']; $set["rok_vydani"] = $_POST['rok']; $set["zeme_puvodu"] = $_POST['puvod']; $set["zaloha_mesic"] = $_POST['zaloha_mesic']; $set["zaloha_rok"] = $_POST['zaloha_rok']; $set["kde_najdu"] = $_POST['umisteni']; //$set["poznamka"] = $_POST['poznamka']; //$set["cover"] = $_POST['cover']; //End of array //Command for inserting into DB //Bylo zde pouzito strtolower, coz zpusobovalo nefunkcni vkladani diakritiky $sql =("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .implode(", ", $set) . ")"); $vysledek_vlozeni = mysql_query($sql); if (!$vysledek_vlozeni){ echo mysql_error(); die('Nepodařilo se vložit nový řádek.'); } else{ echo ('Podařilo se vložit nový řádek.'); } ?> Díky za každou radu. |
||
tiso Profil |
#2 · Zasláno: 21. 1. 2009, 23:51:34 · Upravil/a: tiso
echo $sql; |
||
Mastodont Profil |
#3 · Zasláno: 21. 1. 2009, 23:54:20
U sloupců typu string musíš hodnotu zavřít do uvozovek, to udělej v tom přiřazení do $set.
|
||
gardener Profil |
#4 · Zasláno: 22. 1. 2009, 00:28:35
Myslíš takto
1) "$_POST['interpret']" nebo 2) "'$_POST[interpret]'"; |
||
Mastodont Profil |
#5 · Zasláno: 22. 1. 2009, 00:31:01
Ten druhý způsob.
|
||
gardener Profil |
#6 · Zasláno: 22. 1. 2009, 02:00:28
Teď jsem došel ještě k jednomu zádrhelu a to k problému s předáváním hodnot z input file, tzn abych mohl název souboru vkládat do db pomocí implode.
Takže jsem to vyřešil takto:(Určitě je ale lepší řešení ale nevím jak na to) $set["obal"] = $_FILES['upload']['name']; $file = $_FILES['upload']['name']; //This variable is inserted to the DB $filetype = $_FILES['upload']['type']; //This variable return type file S tím, že $file a $filetype ověřuji zda se jedná o obrázek a také nahrávám soubor na server. Jak to ale udělat s tím vložením do DB? Má někdo prosím nějaký nápad, jak by šlo toto vyřešit? |
||
bohyn Profil |
#7 · Zasláno: 22. 1. 2009, 11:04:21
gardener
apostrofy se pridavaji takto "'".$_POST['interpret']."'" // nebo "'{$_POST['interpret']}'" Na $filetype se vykasli, neni to spolehlive. Overuj to pomoci getimagesize(). Do databaze chces vkladat cely obrazek? To bych nedelal, do DB uloz jenom cestu k obrazku. |
||
gardener Profil |
#8 · Zasláno: 22. 1. 2009, 12:24:13
Právě že chci jenom cestu, ale to by půjde tím způsobem co mám.
Jen ale nevím, jak přiřadit název toho souboru jako hodnotu pole $set["obal"], když to dám takto, tak to asi není správně ne? Resp. určitě to není správně a proto my to hází SQL error. |
||
bohyn Profil |
#9 · Zasláno: 22. 1. 2009, 13:49:19
gardener
funkci move_uploaded_file() presun soubor z tempu do adresare na tvem webu a tu cestu pak uloz do databaze. Retezce pred vlozenim do dotazu nezapomen zabezpecit proti SQL injection funkci mysql_real_escape_string(). Takze prirazeni do pole muze vypadat nejak takto: $set["interpret"] = "'".mysql_real_escape_string($_POST['interpret'])."'"; |
||
Časová prodleva: 16 let
|
0