Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
Jsem začátečník s MySQL a snažím se ho aplikovat na různé příklady, jeden z nich je tento: Po odeslání formuláře, kde je input na číslo, se ono číslo z inputu přičte do dané buňky v databázi. Problém je, že mi to hlásí chybu
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/f/funradio/zkouskamysql.php on line 8 Kterou mi to hlásí vždy, když s danou funkcí mysql_fetch_array() pracuji. Dále jsem okomentoval jednotlivé části mého kódu a byl bych rád, kdybyste mi opravili komenáře, které jsou nesprávné, abych MySQL správně chápal. Dále přikládám tabulku z databáze s názvem klikani. Zde je můj kód: <form method="POST"> <input type=text name="cislozformulare"> <input type=submit value="Přičti"> <?php $spojeni = MySQL_connect("mysql.webzdarma.cz","***","***"); //spojení s databází $cislo=mysql_query("SELECT cislo FROM klikani WHERE ID=1 ;"); // do proměnné číslo přiřaď buňku s číslem $zaznam=MySQL_Fetch_Array($cislo); // do pole proměnné záznam převeď $cislo tzn. tu buňku cislo $cislo = $zaznam["cislo"]; // do proměnné $cislo přiřaď hodnotu $zaznam pole cislo tzn. buňka obsahující číslo mysql_query("INSERT into klikani SET cislo='".($_POST["cislozformulare"]+$cislo)."' where ID=1 ;"); // do buňky číslo přičti hodnotu z formuláře echo $cislo; // vypiš hodnotu buňky cislo, kde je ID rovno 1 ?> </form> Zde http://www.funradio.wz.cz/zkouskamysql.php na živou ukázku. Díky všem na případné rady. Moderátor panther: Smazány příst. údaje k DB.
|
||
fuckin Profil |
#2 · Zasláno: 19. 1. 2011, 19:34:05
$cislo=mysql_query("SELECT cislo FROM klikani WHERE ID=1 ;"); středník tam nemá co dělat, to samé v dotazu dole. |
||
AM_ Profil |
#3 · Zasláno: 19. 1. 2011, 19:34:21
David1256:
„supplied argument is not a valid MySQL result resource“ znamená, že předaný parametr není typu MySQL result - jediné jiné, co může mysql_query vrátit, je false, pokud dotaz selže. Chybu zjistíš pomocí funkce mysql_error(). |
||
David1256 Profil |
#4 · Zasláno: 19. 1. 2011, 20:11:18
AM:
Po MySQL erroru mi to vypsalo další 2 chyby. Do závorek té funkce jsem dal všechny proměnné použité ve scriptu, to je správné užití této funkce? Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /3w/wz.cz/f/funradio/zkouskamysql.php on line 17 Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /3w/wz.cz/f/funradio/zkouskamysql.php on line 18 fuckin: Díky, ty středníky jsem tam dal z rady uživatele Radek Cvek z tohoto tématu. |
||
AM_ Profil |
#5 · Zasláno: 19. 1. 2011, 20:13:21
David1256:
http://php.net/mysql_error na tomto webu najdeš referenční příručku i všech ostatních funkcí PHP. hádájí, co má být jako parametr, není správná cesta. |
||
David1256 Profil |
#6 · Zasláno: 19. 1. 2011, 20:23:56 · Upravil/a: David1256
AM:
Tak jsem zjistil, že se má dát za ten mysql_error() za funkci, kterou chci ověřit. A vypsalo to No database selected. |
||
xmark Profil |
David1256:
mysql_query("INSERT into klikani SET cislo='".($_POST["cislozformulare"]+$cislo)."' where ID=1 ;"); Kdes viděl tenhle zápis INSERTu? Vypadá to, že nemáš moc jasno, k čemu se používá ID a jak s databází pracuje tak nějak celkově. Na http://www.linuxsoft.cz/article.php?id_article=344 najdeš, jak z databáze data dostat, ale doporučoval bych začít spíš na id_article=336, aby ses trochu zorientoval. A mimochodem, smaž si přístupové údaje v #1, jestli nechceš, aby ti tu databázi někdo vyčistil. Moderátor panther: Uživatelské jméno a heslo k DB jsem smazal.
|
||
David1256 Profil |
#8 · Zasláno: 21. 1. 2011, 19:28:13
Jak už jsem říkal, vycházím z rady uživatele Radek Cvek z tématu zmíněného zde [#4]
|
||
DJ Miky Profil |
#9 · Zasláno: 21. 1. 2011, 20:03:51 · Upravil/a: DJ Miky
David1256:
Po připojení funkcí mysql_connect() ještě musíš vybrat databázi, se kterou budeš pracovat, funkcí mysql_select_db() (pokud vím, tak na WZ je název databáze stejný jako login, ale raději si to ověř v administraci WZ). A, jak už psal xmark, máš špatnou syntaxi toho aktualizačního dotazu - aktualizuje se příkazem UPDATE (tedy místo INSERT INTO napiš UPDATE). INSERT slouží ke vkládání nových záznamů (řádků) do tabulky, např. kdybys potřeboval vložit ještě další záznam s jiným ID. |
||
pcmanik Profil |
#10 · Zasláno: 21. 1. 2011, 22:07:06 · Upravil/a: pcmanik
A inak radim ti osetrit si to cislo z post-u, bohate staci funkcia intval()
|
||
David1256 Profil |
#11 · Zasláno: 23. 1. 2011, 17:05:26
Moc dík všem. Už to funguje, jak má.
|
||
Časová prodleva: 2 roky
|
|||
Risek Profil |
#12 · Zasláno: 3. 2. 2013, 01:06:09
David1256:
a co použít $pripsani = mysql_query("UPDATE klikani SET cislo=cislo+".$_POST['cislozformulare']." WHERE ID=1 "); |
||
Micruss Profil |
#13 · Zasláno: 3. 2. 2013, 09:23:45
Takhle bych to udělal já
$neco = $zaznam['cislo'] + intval($_POST['cislozformulare']); $pripsani = mysql_query("UPDATE klikani SET cislo = '$neco' where id = 1"); |
||
Jan Tvrdík Profil |
Risek:
Není mi jasné, proč to vlákno po dvou letech vytahuješ, navíc je tebou popsané řešení náchylné na SQL injection. Micruss: Popsané řešení není atomické, takže může vést ke ztrátě dat. Správné řešení je např. if (isset($_POST['cislozformulare'])) { $pricist = (int) $_POST['cislozformulare']; mysql_query(" UPDATE `klikani` SET `cislo` = `cislo` + $pricist WHERE `id` = 1 "); } |
||
Micruss Profil |
#15 · Zasláno: 3. 2. 2013, 12:48:26
Jan Tvrdík:
Šlo mi jen ukázat ten hlavní kód a tam vložit i s postem... počítal jsem s tím, že už to má hotové jen se ptá na to sečtení |
||
Časová prodleva: 11 let
|
0