Как объяснил scompt.com , запрос может завершиться ошибкой. Используйте этот код, чтобы получить ошибку запроса или правильный результат:
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("
SELECT * FROM Users
WHERE UserName LIKE '".mysql_real_escape_string($username)."'
");
if($result)
{
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
} else {
echo 'Invalid query: ' . mysql_error() . "\n";
echo 'Whole query: ' . $query;
}
Для получения дополнительной информации см. Документацию для mysql_query()
.
Фактической ошибкой были одиночные кавычки, так что переменная $username
не анализировалась. Но вы действительно должны использовать mysql_real_escape_string($username)
, чтобы избежать инъекций SQL.
Это просто означает, что тип данных определяется в модуле, который определяется с помощью безопасного расширения. Вы можете найти детали расширения в руководстве пользователя .
Фактически вы можете проверить это самостоятельно, указав модуль с расширением Safe
:
{-#LANGUAGE Safe#-}
data Test = Test deriving (Eq, Show)
И затем попробуйте его в ghci
:
λ> :i Test
data Test = Test
instance [safe] Eq Test
instance [safe] Show Test
Но обратите внимание, что в текущем GHC (7.10.2) безопасное расширение не может быть связано с гарантией доверия, потому что из этой ошибки ghc .