2015-03-02 106 views
0

我有一个代码,询问数据库中是否存在一行,如果它存在,它会回显一条消息。但是,没有不管我把什么输入回荡PHP如果声明mysqli_num_rows不起作用

这里是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
</head> 
<body> 

    <?php 

    $mysqlhost="host"; 
    $mysqldatabase="b33_15887129_Accounts"; 
    $mysqlusername="username"; 
    $mysqlpassword="password"; 
    $connect=new mysqli($mysqlhost,$mysqlusername,$mysqlpassword); 

    if (!$connect) { 
     die("Connection failed: " . $connect->connect_error); 
    } 

    echo "Connected Successfully"; 

    mysqli_select_db($connect,"b33_15887129_Accounts"); 
    $loginusername=$_POST['loginusername']; 
    $loginpassword=$_POST['loginpassword']; 
    $checkifexist="SELECT * FROM Users WHERE Username='$loginusername' AND 'Password=$loginpassword'"; 
    $runquery=mysqli_query($connect,$checkifexist); 
    $numofrows=mysqli_num_rows($runquery); 

    if($numofrows==1){ 
     echo "Successfully logged in!"; 
    }else{ 
     echo "Failed to log in"; 
    } 

    ?> 
</body> 
</html> 

它管理呼应Connected successfullySuccessfully logged inFailed to log in没有出现无论什么输入。任何帮助?

+3

''Password = $ loginpassword''。这应该是正确的,'密码='$ loginpassword'' – Ranjith 2015-03-02 09:21:16

+0

在数据库上的明文密码恐怖的尖叫,惊恐地注入$ _POST值直接到SQL语句 – 2015-03-02 09:27:25

回答

2

您的“登录失败”未显示,因为您忘记了回显。

if($numofrows==1){ 
    echo "Successfully logged in!"; 
} 
else{ 
    echo "Failed to log in"; 

} 

为了获得SQL工作,@Ranjith是正确的,你需要改变你的SQL语句中的引号的位置。

+0

好吧,我改变了一切。现在它只是说没有登录,即使我明确地拥有一个满足所有要求的数据库。 – 2015-03-02 10:08:11

+0

如果您在数据库中运行相同的select语句,它会返回一行吗?如果是这样,那么你的sql语句是不正确的。一个简单的测试就是将你需要的值硬编码到sql中 - 因此Username ='test'AND password ='test'并查看是否返回正确的响应。 – hlh3406 2015-03-02 10:45:10