Autor Zpráva
Adam501
Profil
Ahoj.
Mám na stránkách formulář, do kterého se zadává 8 znaků.
<input type="text" name="'.$vypis['cislo'].'" size="8" maxlength="8">

Potom ho chci zapsat do databáze, ale místo 8 znaků se zapíše pouze první z nich. Mám nastaveno varchar(8).
mysql_query("UPDATE jky SET vysledek=".$_GET['1']." WHERE cislo='1'");

Proč se nezapíše celý řetězec?

Díky, Adam.
ShiraNai7
Profil
Adam501:
A jsi si jistý, že „$_GET['1']“ má stejnou hodnotu jako „.$vypis['cislo']“?
Adam501
Profil
ShiraNai7:
$vypis zadává do formuláře name, má hodnotu 1.
Je vybíráno z databáze.
ShiraNai7
Profil
Adam501:
Ale v dotazu máš natvrdo "1", takže na to nemá hodnota $vypis['cislo'] vůbec vliv. Nebude to tím? Taky nevidím, že bys používal v dotazu uvozovky a řádné escapování vstupu.
Adam501
Profil
ShiraNai7:
$vypis uloží inputu name 1, který potom zapíšu $_GET[1]
$_GET[1] je tedy to co se má zapsat a tou jedničkou natvrdo jenom říkám do kterého řádku.

Má se stát, že to co je v proměnné se zapíše do sloupce vysledek, který je v řádku s cislo=1
Keeehi
Profil
$dotaz = "UPDATE jky SET vysledek='".$_GET['1']."' WHERE cislo='1'";
echo $dotaz;
mysql_query($dotaz);

Vypíše se dotaz tak jak má být? A v databázi se objeví pak jen jeden znak?
Adam501
Profil
Teď to funguje. A dotaz se taky vypíše správně.
Takže celé co chybělo byly dva apostrofy?
pcmanik
Profil
Adam501:
Ano, lebo bez apostrofov sa to sprava ako cislo. Co znamena ze aj cislo = '1' je lepsie zapisat ako cislo = 1. Databaza to potom nemusi zbytocne pretypovat.
Adam501
Profil
pcmanik:
Áha. To jsem nevěděl. Právě jsem to kopíroval z jiné stránky, kdy zapisuju číslo a tam to fungovalo, takže mi to připadalo divný.
Díky.

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: