hwao
21.12.2003, 19:46:51
Napisalem cos takiego:
[php:1:b5308e19d4]<?php
$sql = 'UPDATE `news` SET `tytul` = "$tytul",'
. ' `tresc` = "$tresc",'
. ' `rysunek` = "$rysunek",'
. ' `data` = "$data",'
. ' `autor` = "$autor",'
. ' `mail` = "$mail",'
. ' `tryb` = "$tryb"
WHERE `id` = "$edit";'
. ' ';
?>[/php:1:b5308e19d4]
I to miało mi zamieniac dane lecz tego nie robi... prosze o jakis kod (ma zmieniac wybrany "wpis" (czyli 1 o nr np 23));
Prosze o pomoc :!:
Cudi
21.12.2003, 19:50:52
Pozbądź sie tych slashy przed cudzysłowami, i wstaw zmienne za pomocą operatora łączenia (kropki)
lub
Zamień apostrofy na cudzysłowy.
zalew
21.12.2003, 22:01:46
[php:1:b4a437c86e]<?php
$sql = 'UPDATE `news` SET `tytul`='".$tytul."'
`tytul` // bo nazwy pol w `
= 'pan tadeusz' //wartosc w '
".$zmienna." // bo wydzielasz zmienna za stringa
?>[/php:1:b4a437c86e]
jono
21.12.2003, 22:14:21
Jest jedna bardzo ważna rzecz: dodaj na końcu[sql:1:d858e12c1d]LIMIT 1[/sql:1:d858e12c1d] Musi działać, chyba, że są inne problemy...
jono
21.12.2003, 22:16:11
[php:1:abfbc222ab]<?php
<?php
$sql = "UPDATE 'news' SET 'tytul'='$tytul' LIMIT 1"
?>
?>[/php:1:abfbc222ab]
uboottd
22.12.2003, 13:55:27
jono: Moglbys wyjasnic bardziej obrazowo co autor mial na mysli stosujac tutaj fraze LIMIT ?
jono
22.12.2003, 15:26:25
Otórz na początku, kiedy uczyłem się używać SQL miałem problem z edycją. Ale zamiast zadawać pytania na forum otworzyłem PHPmyAdmin, gdzie wyświetlają się wykonane zapytania. Porównałem z moim i wystarczyło dodać LIMIT 1 i było ok.
Przykład:
[sql:1:fb36eb0ade]
UPDATE forum SET tytul = '...' WHERE `id` = '34' LIMIT 1 ;
[/sql:1:fb36eb0ade]
skopiowany żywcem z PHPmyAdmin...
więc kod php:
[php:1:fb36eb0ade]<?php
$sql = "UPDATE forum SET tytul='$tytul' WHERE id='$id' LIMIT 1";
?>[/php:1:fb36eb0ade]
zalew
22.12.2003, 15:53:53
limit nie ma tu znaczenia.. on tak jak napisalem w poprzedniej odpowiedzi mial kompletnie zle ulozone polecenie i zadne limity tam by nie pomogly...
uboottd
22.12.2003, 16:10:52
Cytat
Ale zamiast zadawać pytania na forum otworzyłem PHPmyAdmin, gdzie wyświetlają się wykonane zapytania. Porównałem z moim i wystarczyło dodać LIMIT 1 i było ok.
Dociekliwosc niby godna pochwaly... Jednak musi byc 'ale'
Trzeba bylo od razu dokopac sie do manuala i sprawdzic co naprawde robi dodanie frazy "LIMIT 1" na koncu zapytania.
Szczegolnie dziwnie wyglada to zapytanie:
[php:1:bf2d0405c0]
$sql = "UPDATE 'news' SET 'tytul'='$tytul' LIMIT 1"
[/php:1:bf2d0405c0]
Ustawia to tytul _pierwszej lepszej_ wiadomosci, i w dodatku niewiadomo ktorej - kolejnosc wierszy w tabeli jesli nie podano ORDER BY jest niezdefiniowana. Zreszta ogolnie stosowanie LIMIT-u bez ORDER BY przy updatach jest dosc dziwne, szczegolnie przy podaniu warunku na id wiersza.
A PHPMyAdmin moze to robic na wszelki wypadek.
kicaj
22.12.2003, 17:36:12
zdaje mi sie ze jono uzywa LIMIT dlatego ze dane wyciaga petla [manual:c419cbae2d]while() [/manual:c419cbae2d]ktora wyciaga iles rekordów, i wtedy LIMIT pomaga ;/
Sh4dow
22.12.2003, 18:08:58
Bez jakiego kolwiek okreslenia kolejności (ORDER BY) nie sadze zeby to dawalo jakie kolwiek konkretne skutki, a szczegolnie jesi dajemy WHERE = XXX jesli beda 2 rekordy ktore pasuja to tego zapytania a damy LIMIT 1 to kto mi powie ktory rekord bedzie updatowany w takim przypadku ? Pierwszy czy drugi ? Nie polegal bym na tej zasadze tylko i wylacznie dlatego "bo dziala" ale nie wiadomo czemu. To zły nawyk. Wedlug mnie oczywiscie.
uboottd
22.12.2003, 21:45:34
Cytat
zdaje mi sie ze jono uzywa LIMIT dlatego ze dane wyciaga petla [manual:0ec093bb9a]while() [/manual:0ec093bb9a]ktora wyciaga iles rekordów, i wtedy LIMIT pomaga ;/
Zauwaz ze on uzywa limita przy zapytaniu update a nie select.
hwao
22.12.2003, 22:41:06
[php:1:a892c38ee5]<?php
$mysql_edit = mysql_query("UPDATE news SET tytul='$tytul',
tresc='$tresc',rysunek='$rysunek',data='$data',autor='$autor',
mail='$mail',tryb='$tryb' WHERE id LIKE '%".$edit."%' ") or die("znów nie działą :/");
?>[/php:1:a892c38ee5]
I działa : ]
Cudi
22.12.2003, 23:02:48
Rozumiem że id jest typu int(), więc dająć tam LIKE pasowło będzie zarówno 1 jak i 11 jak i 212...
uboottd
23.12.2003, 15:36:05
Poza tym porownanie LIKE '%ciag%' jest wyjatkowo powolne jak na porownania. Daj tam po prostu ... WHERE id = '$edit'") ...
jono
23.12.2003, 22:02:47
No więc moje zapytanie jest jak najbardziej poprawne.
[php:1:6f4bb7f1d5]<?php
$sql = "UPDATE forum SET tytul='$tytul' WHERE id='$id' LIMIT 1";
?>[/php:1:6f4bb7f1d5]
Sam miałem z tym problem, jak mówiłem, i takie było rozwiązanie. Po prostu - LIMIT 1 i wsio.
uboottd
24.12.2003, 08:47:07
[php:1:ba5738cb61]
$sql = "UPDATE forum SET tytul='$tytul' WHERE id='$id'";
[/php:1:ba5738cb61]
Daj juz spokoj z tym LIMITem. To ze MyAdmin go tam dodaje to jest jego sprawa. Po prostu zaklada ze pola po ktorych identyfikuje edytowany wiersz w bazie nie musza byc unikalne (bo sobie ktos tak dziwnie tabele zalozyl) wiec sie _dodatkowo_ zabezpiecza zeby zapisac na pewno conajwyzej jeden wiersz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.