Autor Zpráva
filipbalada12
Profil
ahoj, mám takový problém a prosím Vás o pomoc. (php se teprve učím) Mám dva soubory, pridat.php a pridat-stroj.php. Soubor pridat-stroj.php obsahuje jednoduchý formulář, který by měl odeslat data do pridat.php, kde už mám script, který by měl odeslat zadaná data do databáze. Script mně sám o sobě funguje, protože když vložím třeba $sql = 'INSERT INTO `clanky`(`titulek`) VALUES ( "ahoj" )';, tak se mě to do databáze odešle. Jakmile ale vložím za "ahoj" proměnnou '$a' , tak mě to hlásí chybu Parse error: syntax error, unexpected '$a' (T_VARIABLE) in C:\xampp\htdocs\strojehk.cz\admin\pridat.php on line 14

Přikládám oba soubory:
pridat-stroj.php
<form action="pridat.php" method="get"> 
První číslo: <input type="text" name="a"><br> 
<input type="submit" value="Odeslat"> 
</form>

pridat.php
<?php
   $a = $_GET[a];
   $dbhost = 'localhost';   //server
   $dbuser = 'root';        //uživatel
   $dbpass = '';            //heslo
   $pripojeni = mysql_connect($dbhost, $dbuser, $dbpass);    //připojení
   
   if(! $pripojeni )
   {
      die('Nemůžu se připojit: ' . mysql_error());   //když se databáze nemůže připojit.
   }
   $sql = 'INSERT INTO `clanky`(`titulek`) VALUES ( 0,'$a' )';    //vloží data do tabulky v mysql
      
   mysql_select_db('stroje');        //vybere databazi
   $pripojim = mysql_query( $sql, $pripojeni );      
   
   if(! $pripojim )
   {
      die('Nemůžu vložit data: ' . mysql_error());
   }
   
   echo "Data vložena";
   echo mysql_error($pripojeni);
   mysql_close($pripojeni);
?>
Tomáš123
Profil
filipbalada12:
Obaľ SQL do úvodzoviek namiesto apostrofov alebo použi symbol . na spojenie reťazcov. Ak je $a textový reťazec, je potrebné ešte samú hodnotu obaliť do apostrofov, čiže:
$sql = "INSERT INTO `clanky`(`titulek`) VALUES ( 0,'$a' )";
alebo:
$sql = 'INSERT INTO `clanky`(`titulek`) VALUES ( 0,\''.$a.'\' )'; # Zvýraznená časť nie je potrebná, ak nejde o textový reťazec.

Je veľmi nebezpečné predávať do databázy neošetrené dáta. Použi funkciu mysql_real_escape_string(). Funkcie z rodiny mysql_* sú zastaralé a v ďalších verziách jazyka budú odstránené. Namiesto nich použi radšej funkcie mysqli_*.
Dan Charousek
Profil
Tři věci:
1)
Na řádku dva přistupuješ ke klíči pole, který je řetězec, obal pro "a" do uvozovek:
$a = $_GET[a];

2), 3)
viz. [#2] Tomáš123
filipbalada12
Profil
super, děkuju moc! :)

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: