

Neukládají se mi data do databáze MySQL
Chci uložit data z formuláře. Mám soubor s obsahem:
<?php
//nezapomeň nastartovat session!
session_start();
include "pripojeni.php";
$id = $_SESSION['id'];
$jmeno = $_SESSION['jmeno'];
$ref = $_SESSION['ref'];
$dat = $_SESSION['dat'];
$datum_narozeni = $_SESSION['datum_narozeni'];
$hodina = $_SESSION['hodina'];
$misto = $_SESSION['misto'];
$datum1_narozeni = $_SESSION['datum1_narozeni'];
$hodina1 = $_SESSION['hodina1'];
$misto1 = $_SESSION['misto1'];
$jmeno = $_SESSION['jmeno'];
$email = $_SESSION['email'];
$ulice = $_SESSION['ulice'];
$mesto = $_SESSION['mesto'];
$psc = $_SESSION['psc'];
$horoskop = $_SESSION['horoskop'];
$koment = $_SESSION['koment'];
$sql = "INSERT INTO obednani_horoskopu VALUES (
'$id',
'$ref',
'$dat',
'$datum_narozeni',
'$hodina',
'$misto',
'$datum1_narozeni',
'$hodina1',
'$misto1',
'$jmeno',
'$email'
'$ulice',
'$mesto',
'$psc',
'$horoskop'
'$koment',
)";
$vysledek = mysql_query($sql,$id_spojeni);
if (!$vysledek) die(mysql_error());
/* Konec přímé práce s databází. */
?>
a vypisuje mi to chybu
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 18"
přičemž na řádku 18 je ta definice proměnné $jmeno = $_SESSION['jmeno'];
Co dělám blbě?
Moc se mi to celý nelíbí, musíš tam mít někde výpis sloupců, nech si udělat v phpmyadminovi insert do všech sloupců. Taky si všimni, že máš u posledního '$koment' na konci čárku a tu musíš vyhodit. Mělo by to pak vypadat takto:
Uprav si názvy sloupců podle toho, jak je máš, jestli tam nemáš nějakej prefix. A ještě se ujisti, jestli se tabulka nejmenuje objednani_horoskopu nebo obednani_horoskopu, jak to tam máš.
edit: nekoukal jsem na předchozí odpovědi
, název tabulky už máš vyřešený
vypis stlpcov do ktorych vkladas vobec nemusis vypisovat, ak pocet hodnot vo values resp. v selecte je totozny s poctom stlpcov v tabulke do ktorej insertujes.
Totožný je a i ve stejném pořadí, tak je nevypisuji. Po odstranění čárky za koment však píše, že totožné nejsou či co...
"Column count doesn't match value count at row 1".
v tom prvnim prikazu jsi mel za posledni vkladanou hodnotou pred zavorkou carku. Ta tam nepatri
Jo tu už jsem vyndal. Nevypisuje to už onu chybu se závorkou )když byla čárka navíc), ale že prý jiný počet sloupců.
Na všetky reťazce, ktoré vkladáš do SQL príkazu, použi funkciu mysql_real_escape_string.
Ak to ani potom nebude fungovať, tak sem napíš presný obsah SQL príkazu, ktorý voláš. Teraz tam dosadzuješ nejaké premenné, ktorých obsah môže byť všelijaký, takže v skutočnosti ani nevieš, čo SQL serveru prikazuješ.
Mimo pôvodnej otázky: Skús ešte raz zvážiť, aké dátové typy majú mať jednotlivé stĺpce. Ukladať dátum alebo hodinu ako text nie je celkom v poriadku. Tiež by si mal vedieť, ako dlhé reťazce budeš do jednotlivých stĺpcov vkladať, a teda namiesto typu text použiť varchar, prípadne char.
Tak tohle je blbě
a tohle dobře - funguje. Najděte rozdíl (a vzpomeňte nač jsem expert)
za emailem chybi carka
jj jedna přebývala, druhá chyběla. Tady si toho všimnete hned a já se trápil tři dny
email - čárka