Nejdou mi opravovat data v tabulce, čím to může být? Chybové hlášení:
SQL-dotaz :
UPDATE `Spoj` setnicky = `Roderik` where key = `14`;
MySQL hlásí:
Va-Bše syntaxe je nějaká divná bl-Bízko 'key=`14`' na řádku 1
update spoj SET setnicky='Roderik" where key=14
btw, ma nejaky vyznam, ze pouzivas 'zpetny apostrofy" "`"?
RTFM!
update spoj SET setnicky='Roderik" where key=14
btw, ma nejaky vyznam, ze pouzivas 'zpetny apostrofy" "`"?
Používám i rovné apostrofy, zkoušel jsem i normální uvozovky a zkoušel jsem to i bez uvozovek. Všude v literatuře jsou rovné apostrofy. Ani jedna varianta nefungovala. Nemůže to být v nějakém nastavení tabulky? Nebo účtu?
A co takhle ?
update spoj SET setnicky='$Roderik' where key=14
Ani tak to nefunguje, ten sloupec setnicky je příkaz SET, sloupec Nicky. Fakt nevím, čím to může být. Nemůže to být nějakým nastavením tabulky, nebo úrovní zabezpečení exploreru?
To není možné...
Ukaž nám část kódu, ve které to máš.
Obecná sql syntaxe je:
UPDATE tabulka SET sloupec1='text', sloupec2=cislo, sloupec3='datum' WHERE id=cislo
Výpis kódu:
Výpis skriptu:
$nazev_hostitele="*";
$jmeno_hostitele="*";
$heslo="*";
$nazev_databaze="*";
$nazev_tabulky="";
$polozka="update $nazev_tabulky
set Jmeno='$Jmeno',
Nicky='$Nicky',
Mobil='$Mobil',
Email='$Email',
ICQ='$ICQ',
Pluk='$Pluk'
where Key=$Key";
if (!($link=mysql_connect($nazev_hostitele, $jmeno_hostitele, $heslo))){
printError(sprintf("Chyba při připojování uživatele %s k hostiteli %s", $jmeno_hostitele, $nazev_hostitele));
exit();
}
if (!mysql_select_db($nazev_databaze, $link)){
printError(sprintf("Chyba při výběru databáze %s", $nazev_databaze));
printError(sprintf("Chyba: %d %s", mysql_errno($link), mysql_error($link)));
exit();
}
$vysledek=mysql_query($polozka, $link);
Spojení ověřeno - funkční, normálka mi vkládá řádky i položky
polozka mi taky ukáže ten řetězec co potřebuju, proměnné dorazí ke zpracovatelskému setu :) ale neudělá to vůbec nic. Key mám nastavenou v tabulce, jako int,primární, index a autopřidávání+1, je to doufám správně.
Tak si nech vypsat SQL dotaz, který generuješ, dříve, něž ho necháš provést. Uvidíš, jestli v něm není někde chyba:
<?php
$polozka="update $nazev_tabulky
set Jmeno='$Jmeno',
Nicky='$Nicky',
Mobil='$Mobil',
Email='$Email',
ICQ='$ICQ',
Pluk='$Pluk'
where Key=$Key";
echo $polozka;
?>
Jen tak mě napadám jestli ti v něm někde nechybí mezera. Třeba před "where". Asi takto:
UPDATE tabulka SET sloupec1='hodnota1', sloupec2='hodnota2'WHERE id=10001
Ne mezery držím, to to jenom takhle na sebe napráská to generované chybové hlášení. Dotaz jsem si nechal napsat a echo mi vyhodilo přesnou sekvenci. Kamarád mi říkal, že Webzdarma prý používá jinou skriptaci pro úpravu souborů, že to kolidovalo s asp, ale přesné znění mi neřekl, takže jsem z toho ještě větší jelen. Prolezl jsem kde co a to jak jsem napsal ten příkaz je všude uváděné tak jak jsem to vypsal. Chyba musí být buď v nastavení tabulky, nebo v tom, jak si server vykládá moje příkazy.
jen k tem apostrofum ... to vis, ze maj vyznam, jkt, kdyz si nazves sloupec treba delete a nedas k nemu zpetny apostrof, mysql to nepochopi ... uz sem s tim mel problemy, jinak bych se neozyval :-) ... lepci nejakej ten apostrof navic, nez dlouhy hledani chyb
jak si tak s tím hraju, tak se mi povedlo změnit celý sloupec. Problém bude zřejmě v id proměnné Key. Co je za podmínkou where, to mi SQL nebere.
Jak má být přesně nadefinován ten indexový klíč v tabulce? Zkusil jsem všechny varianty a kromě fulltext mi to vzalo všechno a reagovalo to stejně.
Příkaz Update Tabulka set Jmeno='Jméno'; funguje, akorát nastaví do celého sloupce ty samé hodnoty. Jak tam dám where id=1;, tak je syntaxe "nějaká divná".