Autor | Zpráva | ||
---|---|---|---|
norick Profil |
#1 · Zasláno: 13. 6. 2012, 16:07:22
Ahoj, mám problém s vyhledáním v tabulce podle zadaného řetězce:
$domena = trim(strtolower(str_replace("\\","",$radek[6]))); //$radek[6] obsahuje \\nb-muj, po tomto příkazu obsahuje $domena=nb-muj @$sql_company = mysql_query("SELECT * FROM company WHERE domain LIKE '$domena'") or die ("Chyba aplikace - nepodarilo se nacist firmy (".mysql_error().")"); pocet výsledků 0 @$sql_company = mysql_query("SELECT * FROM company WHERE domain LIKE 'nb-muj'") or die ("Chyba aplikace - nepodarilo se nacist firmy (".mysql_error().")"); pocet vysledku 1 Díky M. |
||
Kajman Profil |
#2 · Zasláno: 13. 6. 2012, 16:27:36
Vypište si pro jistotu celý sestavený dotaz. Někde se budou asi lišit.
|
||
norick Profil |
#3 · Zasláno: 13. 6. 2012, 16:38:16
Tak se neliší, je to úplně triviální dotaz do sql, tak nechápu, kde by mohl být problém
SELECT * FROM company WHERE domain LIKE 'nb-muj' |
||
Keeehi Profil |
$domena = trim(strtolower(str_replace("\\","",$radek[6]))); //$radek[6] obsahuje \\nb-muj, po tomto příkazu obsahuje $domena=nb-muj $dotaz = "SELECT * FROM company WHERE domain LIKE '$domena'"; $sql_company = mysql_query($dotaz) or die ("Chyba aplikace - nepodarilo se nacist firmy (".mysql_error().")"); echo $dotaz ."# výsledků: ".mysql_num_rows($sql_company)."<br>"; $dotaz = "SELECT * FROM company WHERE domain LIKE 'nb-muj'"; $sql_company = mysql_query($dotaz) or die ("Chyba aplikace - nepodarilo se nacist firmy (".mysql_error().")"); echo $dotaz ."# výsledků: ".mysql_num_rows($sql_company)."<br>"; Pokud i toto nebude konzistentní, tak jediné co mě napadá je to, že ta pomlčka v $domena není pomlčka ale nějaký jiný znak který jako pomlčka vypadá např. spojovník. |
||
norick Profil |
#5 · Zasláno: 13. 6. 2012, 16:54:58 · Upravil/a: norick
Zkoušel jsem i tento zápis a ta pomlčka mě taky napadla, ale i bez pomlčky je to bez změny :-(
SELECT * FROM company WHERE domain LIKE 'nb'# výsledků: 0 jesli mu nějak vadí ten převod řetězce trim(strtolower(str_replace("\\","",$radek[6]))); už opravdu netuším. SELECT * FROM company WHERE domain LIKE 'nb'# výsledků: 1 pokud to napíšu rovnou, tak se záznam najde nevím jestli to pomůže, ten $radek[6] je naimportovaná hodnota z txt souboru $data = "./import/mynb_login.txt"; $str = file_get_contents($data); $lines = explode("\n", $str); echo "pocet r ".Count($lines)."<br />"; for ($i = 2; $i < Count ($lines); $i++){ $radek = explode(",", $lines[$i]); for($z = 0; $z < Count ($radek); $z++){$radek[$z] = str_replace("\"","",$radek[$z])." "; } |
||
Keeehi Profil |
#6 · Zasláno: 13. 6. 2012, 17:11:05
norick:
Nakopírujte sem, co se vypíše při spuštění scriptu z [#4]. |
||
norick Profil |
#7 · Zasláno: 13. 6. 2012, 17:17:11
SELECT * FROM company WHERE domain LIKE 'nb'# výsledků: 0
SELECT * FROM company WHERE domain LIKE 'nb'# výsledků: 1 |
||
Keeehi Profil |
Pominu-li fakt, že toto nemůže být výstup z [#4] tak je to opravdu divné.
A toto dopadne jak? $dotaz = "SELECT * FROM company WHERE domain LIKE '$domena'"; for($i=0;$i<strlen($dotaz);$i++) echo ord($dotaz[$i]).","; echo "<br>"; $dotaz = "SELECT * FROM company WHERE domain LIKE 'nb-muj'"; for($i=0;$i<strlen($dotaz);$i++) echo ord($dotaz[$i]).","; echo "<br>"; |
||
norick Profil |
#9 · Zasláno: 13. 6. 2012, 17:36:58 · Upravil/a: norick
83,69,76,69,67,84,32,42,32,70,82,79,77,32,99,111,109,112,97,110,121,32,87,72,69,82,69,32,100,111,109,97,105,110,32,76,73,75,69,32,39,110,0,98,39,
83,69,76,69,67,84,32,42,32,70,82,79,77,32,99,111,109,112,97,110,121,32,87,72,69,82,69,32,100,111,109,97,105,110,32,76,73,75,69,32,39,110,98,39, pouze měním 'nb-muj' za 'nb' - jinak by to měl být ten výstup |
||
Keeehi Profil |
#10 · Zasláno: 13. 6. 2012, 17:53:16
Takže je to jasné. Mezi písmenky n a b je ještě znak 0. Mělo by to být vidět na tomto příkladě:
echo strlen($domena)."<br>"; echo strlen("nb"); |
||
Kajman Profil |
#11 · Zasláno: 13. 6. 2012, 17:53:35
norick:
Všimněte si, že na konci proměnné máte řídící znak 0, ten zlobí. Záhadou zůstává, proč přežije po použití funkce trim. |
||
Keeehi Profil |
#12 · Zasláno: 13. 6. 2012, 17:59:32
Kajman:
„Záhadou zůstává, proč přežije po použití funkce trim.“ Protože je uvnitř textu a ne na konci. |
||
norick Profil |
#13 · Zasláno: 13. 6. 2012, 18:05:53
ano, máte pravdu, mezi každý znak vloží nějakou mezeru, když importuji delší slovo, tak to vloží mezi každý znak. No budu pátrat a uvidím. Každopádně děkuji moc za radu a nasměrování :-)
M. |
||
Časová prodleva: 12 let
|
0