bartekvip
(Bartekviper)
12 Kwiecień 2010 20:06
#1
Witam,
otóż chcę sprawdzić jednakowość zmiennych (czy są takie same) no i dostaje wynik negatywny. Oto wynik:
12
string
12
string
Niezgodne
A oto kod, który podaje mi typy oraz sprawdza dokładność:
$query = "ZAPYTANIE'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$dTestowe = (string) str_replace(" ","", $row[0]);
echo "".$dTestowe."
";
echo gettype($dTestowe)."
";
$query = "ZAPYTANIE'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$solWyj = (string) str_replace(" ","", $row[0]);
echo "".$solWyj."
";
echo gettype($solWyj)."
";
if($solWyj === $dTestowe){
echo "Zgodne";
} else {
echo "Niezgodne";
}
[/code]
Zapytania są sprawne bo wywołują poprawne dane. Tylko kwestia ich porównania. Próbowałem też z strcmp() ale wynik jest również negatywny.
ra-v
(ra-v)
12 Kwiecień 2010 20:38
#2
Aż sam musiałem sprawdzić:)
1
string
1
string
Zgodne
Tak więc albo masz coś nieświadomie zataiłeś w powyższym kodzie albo ta wersja PHP jest z bugiem.
bartekvip
(Bartekviper)
12 Kwiecień 2010 21:52
#3
Wydaje mi się, że problem leży w MySQL. Bo gdy wpiszę te zmienne ręcznie to działa jak najbardziej. Jednak, gdy ich wartość jest wyciągana z bazy danych to wtedy się dzieją takie rzeczy. Oto cały kod:
$query = "SELECT `exeWtestowe` FROM `exercises` WHERE `exeId` = '".$zid."'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$dTestowe = (string) str_replace(" ","", $row[0]);
echo "".$dTestowe."
";
echo gettype($dTestowe)."
";
$query = "SELECT `solutionWyjscie` FROM `solutions` WHERE `solutionStudent` = '".$student."' AND `solutionKind` = '".$kind."' AND `solutionExerciseId` = '".$zid."'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$solWyj = (string) str_replace(" ","", $row[0]);
echo "".$solWyj."
";
echo gettype($solWyj)."
";
/*echo strcmp($solWyj, $dTestowe)."
";
if(strcmp($solWyj, $dTestowe) == 0){
echo "Zgodne";
} else {
echo "Niezgodne";
}
*/
//$solWyj = "20";
//$dTestowe = "20";
if($solWyj === $dTestowe){
echo "Zgodne";
} else {
echo "Niezgodne";
}
[/code]
W bazie pola te są zgodne. Oby dwa text i kodowanie utf8_polish_ci
K.S
(K.S.)
12 Kwiecień 2010 22:20
#4
A tak?
$dTestowe = (string) trim(str_replace(" ","", $row[0]));
...
$solWyj = (string) trim(str_replace(" ","", $row[0]));
bartekvip
(Bartekviper)
12 Kwiecień 2010 22:53
#5
Dzięki. Jak dodałem ten trim() to uzyskałem zgodność.