[PHP][MySQL]Jakieś dziwne znaki

Zaczynam swoją przygodę z php. I mam pytanie why mam takie dziwne znaki przy wykonaniu skyptu ?

NR:


	Marka:


	Modej:


	Rejestracja:


	Pkt:



	Typ:
Zwykły
Emegrancy
Wojsko


Wyślij
Reset

Formularz wiadomo. Teraz skrypt.

<?

$nrauta = $_POST['nrauta'];

$model = $_POST['model'];

$marka = $_POST['marka'];

$rejestracja = $_POST['rejestracja'];

$typ = $_POST['typ'];

$pkt = $_POST['pkt'];


@ $db = mysql_pconnect("x", "x", "x");

if (!$db)  

	{     

	print "wystąpił błąd w połączeniu";     

	exit;  

	}  

print "polączenie z bazą danych zostało nawiązane poprawnie";

print "

";


$wyborbazy=@mysql_select_db("policja");

if ($wyborbazy) 

	{ 

	print("została wybrana baza policja 
"); 

	}


else { 

	print("wystąpił błąd przy wyborze bazy danych"); 

	exit;

     }


INSERT INTO auta 

VALUES ('nrauta', 'model', 'marka', 'rejestracja', 'typ', 'pkt');


print "Auto nr ".$nrauta." i marce ".$marka." zostało dodane.";

?>

Jak wbije dane to pokazuje mi:

㱢爠⼾਼戾偡牳攠敲牯爼⽢㸺†獹湴慸⁥牲潲Ⱐ畮數灥捴敤⁔当呒䥎䜠楮‼戾挺屵獲屫牡獮慬屷睷屴獴屴敳琮灨瀼⽢㸠潮楮攠㱢㸳㘼⽢㸼扲 㸊

jak wywale

INSERT INTO auta

VALUES (‘nrauta’, ‘model’, ‘marka’, ‘rejestracja’, ‘typ’, ‘pkt’);

to pokazuje np.

polączenie z bazą danych zostało nawiązane poprawnie

została wybrana baza policja

Auto nr 2 i marce Renout zostało dodane.

Co jest źle ? Kodowanie jest UTF-8

Jak ktoś wie co jest źle to bardzo proszę o odp. I jeszcze używam krasnala :slight_smile:

A w jakim kodowaniu masz stronę z formularzem? gdyż w takim właśnie przekazywane są do skryptu php. Jakie kodowanie ma baza? ustawiasz kodowanie znaków podczas połączenia z bazą? -> mysql_query(“SET NAMES UTF-8”);

mysql_query("INSERT INTO auta SET 'nrauta'={$nrauta}, 'model'={$model}, 'marka'={$marka}, 'rejestracja'={$rejestracja}, 'typ'={$typ}, 'pkt'={$pkt}"); [/code]

Oraz dodaj na początku przynajmniej:

[code=php]<head><meta http-equiv=“content-type” content=“text/html; charset=UTF-8” />head> 

utf-8 mam tu i tu i teraz przy połączeniu też…

dalej to samo…

Dodane 27.10.2009 (Wt) 18:15

utf-8 mam tu i tu i teraz przy połączeniu też…

dalej to samo…

INSERT INTO auta

VALUES ('nrauta', 'model', 'marka', 'rejestracja', 'typ', 'pkt');

jest czystym poleceniem SQL dla bazy danych - musisz to polecenie umieścić w odpowiedniej funkcji PHP mysql_query(), analogicznie jak to robisz dla mysql_pconnect().

P.S. Powinieneś również zabezpieczyć odbierane dane przed SQL injection - to znaczy użyć m.in. mysql_real_escape_string()

^ ok lepiej nie pokazują się te znaki, ale nie dodaje do bazy.

teraz jest

<?

$nrauta = $_POST['nrauta'];

$model = $_POST['model'];

$marka = $_POST['marka'];

$rejestracja = $_POST['rejestracja'];

$typ = $_POST['typ'];

$pkt = $_POST['pkt'];



@ $db = mysql_pconnect("localhost", "root", "krasnal");

if (!$db)  

	{     

	print "wystąpił błąd w połączeniu";     

	exit;  

	}  

print "polączenie z bazą danych zostało nawiązane poprawnie";

print "

";


$wyborbazy=@mysql_select_db("policja");

if ($wyborbazy) 

	{ 

	print("została wybrana baza policja 
"); 

	}


else { 

	print("wystąpił błąd przy wyborze bazy danych"); 

	exit;

     }



mysql_query("SET NAMES UTF-8");

mysql_query("INSERT INTO auta SET 'nrauta'={$nrauta}, 'model'={$model}, 'marka'={$marka}, 'rejestracja'={$rejestracja}, 'typ'={$typ}, 'pkt'={$pkt}");


print "Auto nr ".$nrauta." i marce ".$marka." zostało dodane.";

?>

Tekstowe pola mają być w cudzysłowach:

mysql_query("INSERT INTO auta SET 'nrauta'={$nrauta}, 'model'=\"{$model}\", 'marka'=\"{$marka}\", 'rejestracja'=\"{$rejestracja}\", 'typ'={$typ}, 'pkt'={$pkt}"); [/code]

Nie wiem które masz liczbowe a które tekstowe

próbuje, próbuje ale nie wychodzi…

to będzie jakiś szkolny byk…