Witam. Proboje dodać do bazy danych tekst, za pośrenictewm tego skryptu:
<?php
$sqla = "SET CHARSET latin2";
?>
<body>
<?php
$sql = "INSERT INTO tekst VALUES(0, '".$_POST['tytul']."', '".$_POST['tresc']."', 0, '".$_GET['id']."');";
if($wykonaj){
} else {
echo 'Coś poszło nie tak- nie udało się dodać'; }
?>
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
6.09.2007, 22:16:43
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.
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
7.09.2007, 11:07:12
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:
<?php
?>
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.:
<?php
?>
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:
dzieki za pomoc!