Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Neznámá chyba Parse error v PHP

V databázi mam data které chci změnit mam na to

<?
$pripoj=MySQL_Connect($se, $us, $pa) or Die(MySQL_Error());
MySQL_Select_Db($db) or Die(MySQL_Error());

$dotaz="SELECT nick,icq,skype FROM users WHERE nick LIKE '$z[0]";;
//vytvoření sql dotazu
$vysledek = MySQL_Query($dotaz); // provedení sql dotazu


while ($zaznam = MySQL_Fetch_Array($vysledek)){
$icq=$zaznam["icq"];
$skype=$zaznam["skype"];
$nick=$zaznam["nick"];

 echo "<h2><strong>Změna údajů</strong></h2>";
 echo "<FORM METHOD=\"POST\" ACTION=\"zmena-udaju2.php$string\" onSubmit=\"return kontrola(formular);\">";
 echo "<br><strong>ICQ:</strong>(9) <INPUT TYPE=\"TEXT\" NAME=\"icq2\" MAXLENGTH=\"9\" SIZE=\"20\" VALUE=\"$icq\" onkeypress=\"return numeric(event);\">";
 echo "<br><strong>Skype:</strong>(32) <INPUT TYPE=\"TEXT\" NAME=\"skype2\" MAXLENGTH=\"32\" SIZE=\"20\" VALUE=\"$skype\" onkeypress=\"return alfanumeric(event,0);\">";
 echo "<br><INPUT TYPE=\"VHIDDEN\" NAME=\"nick\" VALUE=\"$nick\">;
 echo "<br><INPUT TYPE=\"SUBMIT\" VALUE=\"Odeslat\">";
 echo "</FORM>";
}
?>

a to pak má zpracovat

<?
//změní icq v tabulce users
mysql_query ("UPDATE users SET icq =$icq2 WHERE nick = '$nick'");

//změní icq v tabulce users
mysql_query ("UPDATE users SET skype =$skype2 WHERE nick = '$nick'");

if ($icq2!='' || $skype2!='') {$vysledek="<br><strong style=\"color:#008000\">Úspěšně změněno.</strong>";}
else {$vysledek="<br><strong style=\"color:#8b0000\">Někde se stala chyba<br><a style=\"color:blue\" href=\"zmena-udaju.php$string\">zadat znova</a></strong>";}

echo "$vysledek";
?>

už při otevření první stránky to hází Parse error: parse error in /3w/webz.cz/p/pavel-d/test/zmena-udaju.php on line 88

Změna předmětu, původně: Neznámá chyba (host)

Předmět Autor Datum
Jen střílím naslepo - nechybí na konci apostrof? $dotaz="SELECT nick,icq,skype FROM users WHERE nic…
host 12.06.2010 14:30
host
V tom řádku tam má dva středníky na konci, to je ta chyba. To, že tam nedal apostrof je jen chyba v…
marekdrtic 12.06.2010 14:37
marekdrtic
Dva středníky nevadí (ani tři, čtyři, pět...). Berou se jako prázdný řádek/příkaz.
host 12.06.2010 14:41
host
Hups, už jsem asi trochu vyšel ze cviku :-).
marekdrtic 12.06.2010 14:57
marekdrtic
tak konkrétně $z[0] vypíše nick uživatele kterej je právě přihlášenej jinak středníkem to neni těch…
paja22 12.06.2010 14:43
paja22
A ktora je line 88? Na riadku 88 mas chybu. Tak sem napis ktory je riadok 88, vidiet to aj v notepad…
MM.. 12.06.2010 17:16
MM..
no řádek 88 je echo "<br><INPUT TYPE=\"SUBMIT\" VALUE=\"Odeslat\">"; co je na tom špatně ?
paja22 12.06.2010 18:45
paja22
Tento riadok je správne, ale na predchádzajúcom riadku nemáš ukončený reťazec úvodzovkou.
los 12.06.2010 19:00
los
ako uz pisal los, chybu hladas na tomto alebo predchadzajucom riadku, ptz ak je predchadzajuci neuko…
MM.. 12.06.2010 19:09
MM..
no tak tohodle sem si nevšiml je fakt že to funguje ale změnit to jde jen na čísla text to nebere
paja22 12.06.2010 19:31
paja22
co?
MM.. 12.06.2010 19:39
MM..
už nic sem to vyřešil :-)
paja22 12.06.2010 19:42
paja22
ICQ snad ma byt len cislo, nie? mas tam nejaky javascript ze return numeric(event)
MM.. 12.06.2010 19:46
MM..
jo javascript sem odstranil a pořád to bere jen čísla což u skypu je problém vypíše to že údeje byli…
paja22 12.06.2010 19:51
paja22
Co to znamena "bere jen cisla"? Jak presne sa to prejavuje? Jaky presne tam mas teraz kod? (ten form…
MM.. 12.06.2010 19:54
MM..
Co mas v javascripte kontrola(formular) ?
MM.. 12.06.2010 19:55
MM..
Najskôr to bude súvisieť s dátovým typom toho stĺpca v tabuľke. Na zistenie toho, či sa "někde stala…
los 12.06.2010 19:59
los
Hlavne ma v tom dost chaos, testovat uspesnost pomocou if ($icq2!='' || $skype2!='') mi pride dost k…
MM.. 12.06.2010 20:04
MM..
jo zrovna tohle je trochu zvláštně napsáno ale to sem dělal na rychlo to neni teď důležité
paja22 12.06.2010 20:30
paja22
Prva vec skus vyhodit vsetky javascripty (vcetne toho onSubmit=), je to zbytocne (ochrana to neni to…
MM.. 12.06.2010 20:40
MM..
když sem si přes echo mysql_errno() . ": " . mysql_error() . "\n"; nechal vypsat chybu vyhodilo to:…
paja22 23.06.2010 16:58
paja22
Vypis si ten SQL prikaz aj niekde na vystup (alebo do suboru), nech vies jaky SQL prikaz tam posiela… poslední
MM.. 23.06.2010 17:29
MM..

Jen střílím naslepo - nechybí na konci apostrof?

$dotaz="SELECT nick,icq,skype FROM users WHERE nick LIKE '$z[0]";;

A předpokládám, že pole $z je deklarované a obsahuje nějaké hodnoty? Lepší je vložit celý kód než jen takové útržky...

A ktora je line 88? Na riadku 88 mas chybu.
Tak sem napis ktory je riadok 88, vidiet to aj v notepade dole v stavovej liste ze na ktorom riadku mas kurzor tak sa presun na riadok 88 a len tam hladaj chybu.

P.S. a ako pisal host chyba ti tam apostrof ' pred "

Najskôr to bude súvisieť s dátovým typom toho stĺpca v tabuľke. Na zistenie toho, či sa "někde stala chyba", slúží návratová hodnota funkcie mysql_query. Aby si zistil, aká presne chyba sa stala, tak použi funkciu mysql_error.

Takže ak riadok mysql_query(...) upravíš na mysql_query(...) or die(mysql_error()), tak uvidíš, aká chyba nastala počas vykonávania toho príkazu.

Hodnoty v jednom riadku môžeš meniť jedným SQL príkazom, nepotrebuješ pre každý stĺpec samostatný SQL príkaz.

Odporúčam prečítať si niečo o útokoch typu SQL injection, proti ktorým nie je v tvojom kóde žiadne zabezpečenie.

když sem si přes echo mysql_errno() . ": " . mysql_error() . "\n"; nechal vypsat chybu vyhodilo to:
1064: 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 1

začátek stránky sem tady nezveřejňoval takže dodatečně ale chybu nevidim

<?
require "./config.php";

$z = kontrola(); // kontrola hesla a id
$string = "?id=".$id."&pass=".$pass;

?>
<HTML>
<HEAD>
......

Zpět do poradny Odpovědět na původní otázku Nahoru