Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
Autor | Správa |
---|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
S MySQL som síce začiatočník, no šiel som presne podľa knihy, avšak stále sa neviem vysporiadať s jednou chybou. Vytváram si admin pre web a používam prihlasénie cez MySQL. Vždy, keď sa pokúsim prihlásiť a zadávam pri tom na 100% správne údaje, vypíše mi túto chybu:
Kód: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ***\index.php on line 37 tu je kód od 33 po 56: Kód: if ($heslo_ok && $nick_ok) {
$poziadavka = "SELECT nick FROM admin WHERE nick='$nick' AND heslo=PASSWORD('$heslo')"; $vysledok = @mysql_query($poziadavka); $riadok = mysql_fetch_array ($vysledok, MYSQL_NUM);
if ($riadok) {
ini_set('session.use_trans_sid', '1'); session_name('sid'); session_start(); $_SESSION['nick'] = $riadok[0]; header('Location: index.php?pid=logged'); exit();
}
else {
echo ('<h3>Zadali ste zlé prihlasovacie údaje! Svoj pokus zopakujte prosím.</h3>');
}
}
viete niekto čo s tým?
(tabuľka admin obsahuje iba jeden riadok, kde práve stĺpec nick a heslo)
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Máš zle zostavený SQL query. Pridal som ti riadok do toho kódu na podrobný popis chyby, tak to spusti a napíš, čo ti to povedalo...
Kód: if ($heslo_ok && $nick_ok) {
$poziadavka = "SELECT nick FROM admin WHERE nick='$nick' AND heslo=PASSWORD('$heslo')"; $vysledok = @mysql_query($poziadavka);
// TOTO SI TAM PRIDAJ A POVEDZ, CO TI NAPISALO if (!$vysledok) { echo mysql_error();}
$riadok = mysql_fetch_array ($vysledok, MYSQL_NUM);
if ($riadok) {
ini_set('session.use_trans_sid', '1'); session_name('sid'); session_start(); $_SESSION['nick'] = $riadok[0]; header('Location: index.php?pid=logged'); exit();
}
else {
echo ('<h3>Zadali ste zlé prihlasovacie údaje! Svoj pokus zopakujte prosím.</h3>');
}
}
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Kód: Illegal mix of collations (cp1250_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Fíha, s týmto som sa ešte nestretol .
... 5 min hľadanie v Googli ...
Ok, zdá sa, že to mám... Na základe tejto diskusie http://lists.mysql.com/mysql/187156 si myslím, že spustenie tohoto kódu v MySQL Kód: SET NAMES 'cp1250_bin'; ti môže pomôcť... Ešte ak by si sem napísal, čo ti vráti MySQL po spustení kódu Kód: SHOW VARIABLES LIKE ''%char%;
Ešte aby som to upresnil, SQL query máš zostavený dobre .
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 22.11.05 Prihlásený: 29.01.23 Príspevky: 712 Témy: 25 | 25 Bydlisko: SK-Martin |
pepek92 píše: Kód: Illegal mix of collations (cp1250_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='
základná a najbežnejšia chyba o ktorej sa v knihách zrejme hneď tak skoro nedočítaš,
je to klasický problém, nemáš správne nastavené kodovanie, presnejšie máš to pomiešané a to ešte nedovoleným spôsobom,
collate čiže porovnanie má byť nastavené na takú hodnotu v akom je uložený ten skript, čiže keď si skript po vytvorení ukladáš, tak nastavíš napríklad kodovanie windows-1250, potom v DB musíš nastaviť "collate"(EN) alebo "porovnání"(CZ) alebo "zotriedenie"(SK) na "cp1250_bin"
namiesto cp1250_bin môžeš použiť aj "cp1250_general_ci"
set names 'cp1250_bin'; si pridaj do skriptu ak máš v DB nastavenú položku "Overenie MySQL spojenia: cp1250_bin"
ak si na hostingu, kde toto nastavenie sa nedá zmeniť, a spravidla je defaultne nastavené na utf8_unicode_ci, tak musíš napísať aj set names 'utf8';
snáď sa ti podarí rozlúsknuť tento problém, ono to je zložitejšie ako sa zdá,
takže pre teba neostáva nič iné len pokusy a pokusy až kým to nepochopíš a skript nerozbeháš,
na písanie a ukladanie skriptov doporučujem PSPad alebo notepad++, klasický notepad z Windowsu má v veľmi obmedzené možnosti a preto je na takúto prácu nevhodný
do budúcna však doporučujem používať rašej UTF-8 znakovú sadu/kodovanie, predídeš tým mnohým problémom
pri písaní skriptov doporučujem, tak ako to písal aj p360t, doplniť skript chybovými hláškami, po každom dopyte na DB treba jeho overenie či sa vôbec vykonal, a ak nie, tak prečo (vypíše chybovú hlášku, na základe tohto výpisu môžeš potom odstraňovať chyby)
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Ďakujem, už to ide, zmenil som formát db na utf aj celý web a je všetko v 100% poriadku
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Nechcem kvôli tomu zakladať novú tému, tak sa pýtam opäť tu. Vložil som do databázy s kódovaním UTF8_bin text zo stránky s kódovaním tiež UTF-8. Po načítaní textu na stránke sa namiesto znakov s mäkčeňmi zobrazovali čierne kosoštvorce s otáznikmi. Neviete prečo to robí? Ďakujem
|
|
Registrovaný: 22.11.05 Prihlásený: 29.01.23 Príspevky: 712 Témy: 25 | 25 Bydlisko: SK-Martin |
a v DB máš ten text s diakritikou?
a pozri si ešte raz môj predošlý príspevok, najmä to o "Overenie MySQL spojenia"
ide o to, či máš naozaj úplne všetko riadne nastavené, alebo si na niečo zabudol
alebo ešte skús dať namiesto "utf8_bin" toto: "utf8_unicode_ci",
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Skúšal som a dospel som k záveru, že jediné písmeno, ktoré takto robí neplechu je malé "č" (veľké nie) skúšal som úplne všetko a nič. Na webe je utf8 a v databáze utf8_unicode_ci
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Vyriešil som to aj keď nepriamo, ale predsa. Vždy pri pridávaní textu do db sa najskôr skontroluje, či je v texte písmeno "č" a následne sa premenuje na *c*:
Kód: ereg_replace("č", "*c*", $data) Potom, v prípade výberu textu z databázy bude fungovať opačný proces: Kód: ereg_replace("\*c\*", "č", $riadok["1"])
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
skus napr. utf8_general_ci
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
pepek92 píše: Na webe je utf8 a v databáze utf8_unicode_ci
Je to už jedno, ide to pomocou môjho spôsobu, ale aj tak ďakujem za pomoc .
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Opäť sa obraciam na vás, zase si neviem rady. Budujem novú verziu jedného môjho webu, a zatiaľ len skúšam. Vytvoril som si testovaciu tabuľku v databázy (zotriedenie cp1250_bin) a web je tiež v windows-1250. Pomocou jednoduchého formulára som skúšal pridávať slová a efekt bol taký, že písmenká ľ, ť, č, ď a ň mi zobrazovalo ako ?. Skúšal som všetko, čo ma napadlo, viete mi s tým niekto poradiť. Už som z toho zúfalí (o utf nechcem ani počuť).
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Už som to vyriešil, do skriptu som pridal
Citácia: mysql_query("SET CHARACTER SET cp1250", $mysql_connect);
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Tak, mám opäť otázku. Skúsil som zálohovať aktuálnu databázu na mojom phpBB2 fóre (cp1250) a potom som ju dal do fóra, ktoré mám na localhost-e v mojom počítači. Všetko ide v poriadku, no na fóre sa mi ukazuje namiesto č otáznik. V databáze je to správne. Skúsil som príkaz:
Kód: SET CHARACTER SET cp1250
a to pomohlo. Prečo mi predtým ukazovalo namiesto "č" iba "?". Chyba bola na fóre alebo kde potom?
|
|
Registrovaný: 22.11.05 Prihlásený: 29.01.23 Príspevky: 712 Témy: 25 | 25 Bydlisko: SK-Martin |
to nás skúšaš či čo? alebo trpíš "samovravou"?
set charakter set ti zabezpečuje komunikáciu scriptu s db v správnom kódovaní, novšie mysql(tuším od verzie 4.2.x) toto vyžadujú
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
mokus píše: novšie mysql(tuším od verzie 4.2.x) toto vyžadujú
toto som chcel vedieť, totiž nechápal som prečo mi to na hostingu nerobilo a u mňa už hej, dakujem
|
|
Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
|