Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP + MYSQL] Dziwny błąd przy dodawaniu tekstu
Forum PHP.pl > Forum > PHP
kimu
Witam. Proboje dodać do bazy danych tekst, za pośrenictewm tego skryptu:

  1. <?php
  2. $conn = mysql_connect("mysql.60free.ovh.org","hakara","pppppp");
  3. mysql_select_db("hakara");
  4. $sqla = "SET CHARSET latin2";
  5. mysql_query($sqla);
  6. ?>
  7.  
  8. <body>
  9. <?php
  10. $sql = "INSERT INTO tekst VALUES(0, '".$_POST['tytul']."', '".$_POST['tresc']."', 0, '".$_GET['id']."');";
  11. $wykonaj = mysql_query($sql);
  12.  
  13. if($wykonaj){
  14. echo 'Dodano';
  15. } else {
  16. echo 'Coś poszło nie tak- nie udało się dodać';
  17. }
  18. ?>


I niestety pojawia mi się komunikat: Coś poszło nie tak- nie udało się dodać. Błąd pojawia się podczas dodawania TEGO tekstu. Gdy wpisuje coś innego to dodaje się normalnie. Myślałem że chodzi tutaj o limit znaków ale w tabeli "treść" tekstu jest ustawiona na "text" więc chyba może być dowolna ilość znaków. Na czym więc polega problem ?
Blodo
Po pierwsze: wywoluj mysql_error() przy bledzie, zebys latwiej wiedzial o co chodzi.
Po drugie: ide o zaklad ze po przemieleniu $_POST['tytul'] i $_POST['tresc'] przez mysql_real_escape_string() wszystko bedzie dzialac. Ofcoz twoj skrypt nadal bedzie wymagal poprawek, jak chocby np. potwierdzenie ze twoje $_GET['id'] to liczba a nie np. jakies zapytanie sql.
kimu
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /home/h/a/k/hakara/www/wpis2.php on line 87

Chodzi tutaj o linijke 10 skryptu podanego wyżej. Mógłyś mi Blodo pokazać jak powinien wygladac ten skrypt z tym elementem "mysql_real_escape_string() " ? Jeśli oczywiści nadal uważasz żę powinien pomóc ;-)

Dodam jeszcze budowe tabeli do któej dodawane są teksty:

Pole, Typ, Metoda porównywania napisów, Atrybuty, Null, Domyślnie Dodatkowo Działanie
id, int(30), -, -, Nie, -, auto_increment
tytul, varchar(100), latin2_general_ci, -, Tak, nazwa , -
tekst, text latin2_general_ci, -, Tak, NULL, -
wyswietlen, int(7), -, -, Nie, 0, -
kat, varchar(5), latin2_general_ci, -, Nie, -, -
Blodo
Error mowi ze identyfikator polaczenia jest nieprawidlowy, co mniej wiecej oznacza ze polaczenie zostalo przerwane przed wywolaniem zapytania. Sprawdz czy nie dales gdzies przypadkiem mysql_close() przed linia 87, a jezeli wywolujesz w skrypcie mysql_connect() wiecej niz raz to upewnij sie ze zapytanie korzysta z wlasciwego polaczenia wyloujac mysql_query() tak:
  1. <?php
  2. mysql_query($sql, $conn);
  3. ?>

Gdzie $conn to twoje polaczenie z baza.

mysql_real_escape_string() tutaj wprawdzie nie pomoze jednak, ale tez warto zaznajomic sie z ta funkcja aby polepszyc bezpieczenstwo strony. Np.:
  1. <?php
  2. $_POST['tytul'] = mysql_real_escape_string($_POST['tytul']);
  3. ?>
kimu
W skypcie niema nigdzie "mysql_close() ". Tak jak pisałem gdy dodaje coś innego w kilku słowach to dodaje się normalnie. Ten tekst jakoś nie chce sie dodać (dziwne jest też że jak skasuje jego ostatni akapit to dodaje się normalnie) - wygląda to tak jakby posiadał za dużą ilość znaków, ale to nie jest chyba możliwe :/

Ok, teraz działa. Dodałem tą linkije:

  1. <?php$_POST['tresc'] = mysql_real_escape_string($_POST['tresc']);?>


dzieki za pomoc!
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.