Autor | Zpráva | ||
---|---|---|---|
aladin Profil * |
#1 · Zasláno: 11. 5. 2013, 23:24:00
zdravím,
lidi prosím vás,kde mám chybu? mysql_query("SET character_set_client =".$charset, $connect); mysql_query("SET character_set_results =".$charset, $connect); mysql_query("SET character_set_connection =".$charset, $connect); mysql_query("set names ".$charset); pokud to tam hodím normálně (bez proměnný,prostě tam dám utf-8) tak to jde.Díky za odpověd |
||
Tori Profil |
#2 · Zasláno: 12. 5. 2013, 06:45:41
aladin:
V MySQL se píše utf8 , bez pomlčky. A použijte buď jen první tři řádky, nebo jen ten čtvrtý (podle vaší verze MySQL/PHP) - obojí dělá to samé.
|
||
aladin Profil * |
#3 · Zasláno: 12. 5. 2013, 09:26:00
Tori:
aha,díky.. ale stejně když to kodování dám do proměnný,a dám to jen do set names tak to nefunguje... když tam dám pouhej text tak to fakčí, mysql_query("set names uft8"); ale pokud to chci přes proměnnou tak mě to nechce jít..do meta se to vypíše,ale do mysql query ne.. žeby špatně uvozovky?ale to by vypsalo nějakou chybu ne? |
||
Tori Profil |
aladin:
„do meta se to vypíše,ale do mysql query ne“ Ale to je rozdíl. Do HTTP hlavičky se píše Content-Type: text/html; charset=utf-8 , do MySQL jen SET names utf8 . Nemůžete tedy použít stejnou hodnotu/proměnnou pro obojí. SET names utf-8 znamená "utf minus 8", vyhodí chybu, že znaková sada utf neexistuje. (Resp. mysql_query vrátí false a teprv potom pomocí mysql_error() zjistíte tuhle chybu.)
|
||
aladin Profil * |
#5 · Zasláno: 12. 5. 2013, 10:05:15
Tori:
to vím,také to tak mám,že v meta mám utf-8 a v mysql jen utf8,ale prostě to nejde... v erroru to píše chybu You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 mysql_query("set names ".$charset); |
||
Tori Profil |
#6 · Zasláno: 12. 5. 2013, 10:21:50
Když dáte těsně před volání mysql_query toto:
echo "set names ".$charset; , vypíše to i kódování?
Podle chybové hlášky to vypadá, že ta proměnná je prázdná (= definujete ji až později, anebo jste ji někde mezitím přepsal). Když používáte totéž v meta tagu, tak máte dvě různé proměnné (pro "utf-8" a "utf8") anebo jen jednu, ze které smažete/přidáte tu pomlčku? |
||
aladin Profil * |
#7 · Zasláno: 12. 5. 2013, 10:30:49 · Upravil/a: aladin
myslím si že jí nikde nepřepisuju..volal jsem jí před a za mysql query a pořád tam je...
<?php $GETcharset=$_GET['charset']; $charset=""; if($proGET=="utf-8" xor $proGET=="UTF-8"){ // pokud mám v url charset=utf-8 nebo UTF-8 tak jí podmínka přepíše na uft8,popř nechá jiné kodování,např cp1250 apod.. $charset="utf8"; }else{ $charset=$GETcharset; } function Database($hostitel = "localhost", $uziv_jmeno = "root", $heslo = "pass",$DB = "table"){ static $connect; $connect = @mysql_connect($hostitel,$uziv_jmeno,$heslo); @mysql_select_db($DB,$connect); if(!$connect){ throw new Exception( mysql_error() ); return false; } mysql_query('set names '.$charset.'') or die ('Nepodařilo se nastavit jazyk'); return true; } Database(); echo "<br>".mysql_error()."<br>"; echo "<H1>". $charset . "</H1>"; vypíše utf8 podmínka if($proGET=="utf-8" xor $proGET=="UTF-8"){ if($GETcharset=="utf-8" xor $GETcharset=="UTF-8"){ |
||
Tori Profil |
#8 · Zasláno: 12. 5. 2013, 11:05:23
Přidejte znakovou sadu jako další parametr funkce database.
Jinak místo xor můžete zrovna tak použít i or - stejná proměnná nikdy nemůže mít dvě různé hodnoty. Neřešíte nijak situaci, kdy parametr $_GET['charset'] bude prázdný nebo nedefinovaný.
|
||
aladin Profil * |
#9 · Zasláno: 12. 5. 2013, 11:16:51
jak to myslíte znakovou sadu?
znaková sada je ten mysql_query('set names ...'); ne? |
||
Tori Profil |
#10 · Zasláno: 12. 5. 2013, 11:26:47
function Database($hostitel, $uziv_jmeno, $heslo, $DB, $charset){ .... } Database('localhost', 'root', 'pass', 'table', $charset); |
||
aladin Profil * |
#11 · Zasláno: 12. 5. 2013, 11:49:53
hurá..ještě po menší upravě to šlape..díky moc za radu :)
|
||
Časová prodleva: 12 let
|
0