Autor | Zpráva | ||
---|---|---|---|
noskill Profil |
#1 · Zasláno: 23. 2. 2013, 21:44:11
Dobrý den, jsem teprve začátečník a zkouším vytvořit databázi, která si bere informace s kontaktního formuláře vloží je do databáze a poté vytiskne na stránce v tabulce. Použil jsem tenhle kód ze stránek http://www.tvorba-webu.cz/php/mysql.php.
<? $db="mydata"; $tb="adresar"; $sloupec1="Jméno"; $sloupec2="Zvíře"; $sloupec3="Částka"; $spojeni=mysql_connect("localhost","php@localhost","php"); mysql_select_db($db, $spojeni); $tabulka=mysql_query("CREATE TABLE `$tb` (`$sloupec1` VARCHAR (20) NOT NULL,`$sloupec2` VARCHAR (40) NOT NULL)", $spojeni ); ?> <? $db="mydata"; $tb="adresar"; $spojeni=mysql_connect("localhost","php@localhost","php"); mysql_select_db($db, $spojeni); mysql_query("INSERT INTO $tb values ($_POST['name'], $_POST['zvire'], $_POST['castka']), $spojeni"); ?> Hází mi to chybu v mysql_query (zápis mám dle mého špatně). Za odpověď velice děkuji. |
||
Majkl578 Profil |
Jakou chybu?
18. řádek má vypadat takto: mysql_query("INSERT INTO $tb values ($_POST['name'], $_POST['zvire'], $_POST['castka'])", $spojeni); Celé řešení má nicméně bezpečnostní díru, je náchylné vůči SQL injection. |
||
juriad Profil |
#3 · Zasláno: 23. 2. 2013, 21:56:04
Navíc do tabulky se dvěma sloupci vkládáš tři hodnoty. Chybí ti na řádku 9 definice třetího sloupce.
|
||
noskill Profil |
Mám tři sloupce ale stále mi to hlásí chybu :/
Vyskakuje mi tahle hláška: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /home/users/noskill/zvirata.g6.cz/web/poslat.php on line 44 Znáte nějaké zdroje o bezpečnosti dírách v databázích a php? |
||
juriad Profil |
#5 · Zasláno: 23. 2. 2013, 22:13:13
Když se uvnitř stringu odkazuješ na prvek pole, nepoužívají se ani apostrofy, ani uvozovky:
"$_POST[name]" |
||
noskill Profil |
Moc díky :) ale stále tam je ještě někde chyba.. hlásí to chybovou hlášku ve vytvoření databáze. Parse error: syntax error, unexpected ')' in /home/users/noskill/zvirata.g6.cz/web/poslat.php on line 24
<? $jmeno="mydata"; $spojeni=mysql_connect("localhost","php@localhost","php"); $vytvorit=mysql_create_db($jmeno, $spojeni) ); ?> <? $db="mydata"; $tb="adresar"; $sloupec1="Jméno"; $sloupec2="Zvíře"; $sloupec3="Částka"; $spojeni=mysql_connect("localhost","php@localhost","php"); mysql_select_db($db, $spojeni); $tabulka=mysql_query("CREATE TABLE `$tb` (`$sloupec1` VARCHAR (20) NOT NULL,`$sloupec2` VARCHAR (40) NOT NULL, `$sloupec3` VARCHAR (40) NOT NULL)", $spojeni); ?> <? $db="mydata"; $tb="adresar"; $spojeni=mysql_connect("localhost","php@localhost","php"); mysql_select_db($db, $spojeni); mysql_query("INSERT INTO $tb values ($_POST[name], $_POST[zvire], $_POST[castka])", $spojeni ); ?> <? $spojeni=mysql_connect("localhost","php@localhost","php") ; $co="SELECT * FROM adresar"; $navrat=mysql_db_query("mydata", $co, $spojeni); echo("<table border=\"1\">"); for ($i=0;$i<mysql_num_fields($navrat); $i++){ echo("<td><strong>".mysql_field_name($navrat, $i)."</strong></td>"); } while (list($name, $zvire, $castka) = mysql_fetch_row($navrat)){ echo("<tr><td>$name</td><td>$zvire</td><td>$castka</td></tr>" ); } echo("</table>"); ?> Dobře.. tu závorku jsem odstranil.. blbě se koukám, ale i přesto to hází fatalní error.. |
||
juriad Profil |
#7 · Zasláno: 23. 2. 2013, 22:41:25 · Upravil/a: juriad
Na 4. řádku přebývá jedna závorka.
$vytvorit=mysql_create_db($jmeno, $spojeni) ); Připíšu další poznámky ke kódu. Bohužel se mi křišťálová koule porouchala, věštit, kde k fatal erroru došlo, bez ní nedokážu. Jaký error a kde? Možná, některé z následujících problémů jsou důvodem. Je blbost vytvářet databázi (!) a tabulku pomocí PHP skriptu při zpracování formuláře. Většinou (a opravdu dobře si rozmysli, když náhodnou ne) chceš vytvořit databázi a všechny tabulky mnohem dříve - při instalaci, nebo při prvním spuštěním. Pro správu databáze při vývoji můžeš použít phpmyadmin či adminer. Nepojmenovávej sloupce v databázi s diakritikou. Nevytvářej pro jednu query nové spojení. Většinou stačí vytvořit jediné na začátku celého skriptu. Řádku 32 - 34 nahraď normálním výpisem echo "<tr><th>Jméno</th><th>Zvíře</th><th>Částka</th></tr>"; Nespoléhej na pořadí sloupců vrácených SELECTEM. Použij místo mysql_fetch_row funkci mysql_fetch_assoc. |
||
noskill Profil |
#8 · Zasláno: 23. 2. 2013, 23:05:03
I tak moc díky zkusím co se dá, mrknu na to phpmyadmin :) a třeba najdu nějaké návody. (vím že to existuje ale neděl jsem v tom pomalu nic)
|
||
Časová prodleva: 11 let
|
0