![]() |
![]() |
![]()
Post
#1
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
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 :!: (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Pozbądź sie tych slashy przed cudzysłowami, i wstaw zmienne za pomocą operatora łączenia (kropki)
lub Zamień apostrofy na cudzysłowy. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 407 Pomógł: 0 Dołączył: 24.10.2002 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
[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] |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
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...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
[php:1:abfbc222ab]<?php
<?php $sql = "UPDATE 'news' SET 'tytul'='$tytul' LIMIT 1" ?> ?>[/php:1:abfbc222ab] |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
jono: Moglbys wyjasnic bardziej obrazowo co autor mial na mysli stosujac tutaj fraze LIMIT ?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
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] |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 407 Pomógł: 0 Dołączył: 24.10.2002 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
limit nie ma tu znaczenia.. on tak jak napisalem w poprzedniej odpowiedzi mial kompletnie zle ulozone polecenie i zadne limity tam by nie pomogly...
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
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' (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) 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. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
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 ;/
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#13
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
[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 : ] |
|
|
![]()
Post
#14
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem że id jest typu int(), więc dająć tam LIKE pasowło będzie zarówno 1 jak i 11 jak i 212...
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
Poza tym porownanie LIKE '%ciag%' jest wyjatkowo powolne jak na porownania. Daj tam po prostu ... WHERE id = '$edit'") ...
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
[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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 23:45 |