Jaki czas temu udało mi się napisać skrypt, który aktualizował dwie tabele w bazie danych odnośnie monitorowania ściągnięć plików.
jedna tabela zbiera ilości ściągnięć danego pliku
druga historie wszystkich ściągnięć: czas z jakiego serwera itp.
Skrypt działał przez długo czas poprawnie ale niestety nagle przestał. oto ten skrypt:
<?php $plik = $_GET['plik']; //pobiera nazwę pliku, który użytkownik chce pobrać $baza_ip = '127.0.0.1'; //adres bazy danych $baza_uzytkownik = 'nazwa'; //nazwa użytkownika bazy $baza_haslo = 'haslo'; //hasło dla danego użytkownika bazy $baza = 'baza'; //nazwa bazy glównej $baza_zrodlo1 = 'dr_sciagnieteile'; //tabela, w której są zapisywane wpisy o ilości pobrań $baza_zrodlo = 'dr_sciagnietekto' ; $folder_z_plikami = 'sciezka/'; //tutaj będą znajdować się pliki do pobrania //sprawdzam czy zmienna plik jest pusta, jeżeli jest pusta nie wywołuję //dalej kodu tylko informuję o błędzie. //sprawdzam czy zmienna plik jest pusta, jeżeli jest pusta nie wywołuję //dalej kodu tylko informuję o błędzie. //... if ($plik != '') { //sprawdzam czy podany plik istnieje na serwerze { //jeżeli plik nie istnieje to nie wykonuję dalszych operacji tylko //wyświetlam informację o błedzie } else { /* Powyższym kodem łączę się z bazą danych mySQL korzystając ze stałych zdefiniowanych na początku skryptu. Znak małpy przed zmienną $db konieczny jest ze względu na możliwość wystąpienia błędu, który jeżeli i tak zaistnieje to i tak zostanie znaleziony za chwilę. */ if ($db) //sprawdzam czy zostaliśmy połączeni z bazą { //Jeżeli tak wykonujemy poniższe czynności //sprawdzam czy w tabeli $baza_zrodlo istnieje nazwa naszego pliku //sprawdzam ile razy występił wpis o nazwie pliku w $plik if($num >= 1) //jeżeli występuje jeden plik, lub więcej o tej nazwie to... { //...poberam do zmiennej $ile ilość pobrań danego pliku <- w tym miejscy function IleRazyPobrano($plik, $baza, $baza_zrodlo1) { //wybieram bazę //wysyłam zapytanie do bazy o liczbę ściągnięć //pobieram wynik w komórki, którą otrzymałem w zmiennej $ilerazy //zwracam pierwszy wynik ponieważ zmienna $wynik jest typu array return $wynik[0]; } // korzystam ze skryptu "pobrano.php" $ile = IleRazyPobrano($plik, $baza, $baza_zrodlo1); $nowy = $ile+1; // dodaję jedno pobranie //Tutaj rozpoczyna się już właściwie pobieranie pliku //koniec części odpowieadającej za pobieranie //wysyłam do bazy prośbę o uaktualnienie wpisu ilości pobrań $czas=date("Y.m.d - G:i:s, D");//'{$_SERVER['REMOTE_ADDR']}', '$hostname', '$plik' , '{$_SERVER["HTTP_REFERER"]}', '{$_SERVER["HTTP_USER_AGENT"]}' $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); // wysyłanie mail' z info o sciagnieciu if ($plik == "konkretny_plik.pdf") { $tresc = "Sciagnieto Twoj abstrakt \"{$plik}\" .\r\n\r\nCzas: ".$czas."\r\nHost: ".$hostname." (".$_SERVER['REMOTE_ADDR'].")\r\nZ łącza: ".$_SERVER["HTTP_REFERER"]."\r\npo raz:".$nowy."\r\n "; } } else // jeżeli nie znaleziono pliku w tabeli o tej nazwie to... { //wysyłamy prośbę o dodanie pliku z wartością 1 ściągnięcia $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); mysql_query("insert into $baza_zrodlo values ('', '$czas', '{$_SERVER['REMOTE_ADDR']}', '$hostname', '$plik' , '{$_SERVER["HTTP_REFERER"]}', '{$_SERVER["HTTP_USER_AGENT"]}')"); if ($plik == "konkretny_plik.pdf") { $tresc = "Sciagnieto Twoj abstrakt \"{$plik}\" .\r\n\r\nCzas: ".$czas."\r\nHost: ".$hostname." (".$_SERVER['REMOTE_ADDR'].")\r\nZ łącza: ".$_SERVER["HTTP_REFERER"]."\r\npo raz:".$nowy."\r\n "; } //Poniższe wysyłanie jest identyczne jak w przypadku powyższym //koniec wysyłania } } else { //jeżeli nie można połączyć się z bazą mySQL wyświetl komunikat o błędzie } } } else { //jeżeli zostały wysłane złe dane do skryptu wyświetl błąd } ?>
najdziwniejsze jest to, że jedna tabela z ilością ściągnięć cały czas jest aktualizowana. Problem jest z tą drugą.
nie zapisuję mi wartości do niej tak jakby komenda "insert" nie działała. nawet mail jest wysyłany.
przejrzałem historię i wynika z niej, że błąd prawdopodobnie pojawił się po zmianie z php4 na php5. Czy możliwe, żeby zmieniła się składnia komendy "insert"?

Uprawnienia użytkownika są ustawione na full za pomocą MYSQL Administrator. Ja już nie mam pomysłu.
co mogło się stać.
Bardzo proszę o pomoc.
dziękuję przepraszam jeśli jestem w złym dziale ale jestem tu nowy.