SQL在php admin中工作,但在PHP代码中返回空结果

时间:2014-09-26 15:54:07

标签: php sql admin

这是我的代码:

  $usersql = "Select fab2_type from feesys_admin where adminname ='$_POST[username]' and adminemail = '$_POST[password]'";
        $userresult = mysql_query($usersql) or die ("<h3>Error in query: $query. ".mysql_error()."</h3>");
        $num_rows = mysql_num_rows($userresult);
        if($num_rows > 0) {
            if($userresult['fab2_type']=='Partner'){
        }

当我通过PHP Admin在数据库上运行SQL语句时,它可以正常工作。但它在结果中返回空。

我检查确保数据库连接正常。 我检查了所有拼写 行数正确返回。 没有语法错误。 当我回显用户名和密码以及sql语句时,它都是正确的。

此代码过去常常工作,所以我不知道这里出了什么问题。

1 个答案:

答案 0 :(得分:1)

这是因为您没有正确引用$_POST数组变量。您有$_POST[username]$_POST[password]。它应该是$_POST['username']$_POST['password']。这会导致PHP将用户名和密码解释为constants

以下是您的语法的另一个镜头 -

$usersql = "SELECT `fab2_type` FROM `feesys_admin` WHERE `adminname` ='".$_POST['username']."' AND `adminemail` = '".$_POST['password']."' ";

你可以通过预定义来进一步缩短这一点(如Fred所说)。

$user = $_POST['username']; // please sanitize this
$pass = $_POST['password']; // please sanitize this
$usersql = "SELECT `fab2_type` FROM `feesys_admin` WHERE `adminname` ='".$user."' AND `adminemail` = '".$pass."' ";

如果不清理用户输入,那么SQL注入风险很大。


密码相关

我注意到您可能以纯文本格式存储密码。如果是这种情况,则非常气馁。

我建议您使用CRYPT_BLOWFISH或PHP 5.5的password_hash()功能 对于PHP&lt; 5.5使用password_hash() compatibility pack

另外,关于SQL注入,use mysqli with prepared statementsPDO with prepared statements,它们更安全