Mysql数据库不显示php中的查询结果

时间:2015-03-15 21:32:07

标签: php mysql

我正在尝试运行一个初学者mysql程序,该程序根据数据库中的存储值检查两个参数。我有一个名为' sl493'在服务器上,它有一个表' metauser'和1行数据。当我尝试运行该程序时,我只能成功连接"并且没有'登录确定'

<html>
<head>
<title>Connecting MySQL Server</title>
</head>
<body>
<?php
$username = 'fahad';
$password = '2';

   $dbhost = '*********.edu';
   $dbuser = '*******';
   $dbpass = '*******';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass); // connect to server
   if(! $conn )
   {
     die('Could not connect: ' . mysql_error());
   }

   echo 'Connected successfully';
   mysql_select_db('sl493',$conn); //pick sl493 database

$result = mysql_query("SELECT * 
        FROM metauser 
        WHERE metauser.username = $username;
        AND metauser.password = $password") ; //select data from metauser table

        $row = mysql_fetch_assoc($result);

        if($row['username'] == $username)
{
    echo 'Login ok';
}
else
{
    'Login failed';
}
?>
</body>
</html>

这是数据库的快照: http://i.stack.imgur.com/0PUPG.jpg

关于出了什么问题的任何建议?

2 个答案:

答案 0 :(得分:2)

你不应该像对待字符串那样对待字符串。

您的$username子句中的where末尾也有一个分号,需要删除。

$result = mysql_query("SELECT * 
        FROM metauser 
        WHERE metauser.username = '$username'
        AND metauser.password = '$password'") ;

有关字符串文字的更多内容:


您目前的代码向SQL injection开放。使用mysqli with prepared statementsPDO with prepared statements

对于密码存储,请使用CRYPT_BLOWFISH或PHP 5.5的password_hash()功能 对于PHP&lt; 5.5使用password_hash() compatibility pack

  • 您应该存储 哈希 密码,而不是文字字符串。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

同时将or die(mysql_error())添加到mysql_query()

旁注:错误报告应仅在暂存时完成,而不是生产。

答案 1 :(得分:0)

根据php.net

$query = sprintf("SELECT * FROM metauser 
    WHERE metauser.username='%s' AND metauser.password='%s'",
    mysql_real_escape_string($username),
    mysql_real_escape_string($password));

// Perform Query
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
if($row['username'] == $username)
{
    echo 'Login ok';
}

仅供参考,该页面还说不推荐使用mysql_query和mysql_fetch_assoc。