Autor Zpráva
gardener
Profil
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
echo $sql;
Mastodont
Profil
U sloupců typu string musíš hodnotu zavřít do uvozovek, to udělej v tom přiřazení do $set.
gardener
Profil
Myslíš takto
1)
"$_POST['interpret']"

nebo
2)
 "'$_POST[interpret]'";
Mastodont
Profil
Ten druhý způsob.
gardener
Profil
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
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
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
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'])."'";

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: