我无法登录执行

时间:2015-03-09 11:45:02

标签: php mysql apache database-connection server

我有一个登录表单,其内容为

<h1>Log In</h1>
<div style="width: 80%;margin-right: auto;margin-left: auto">
<form action="checklogin.php" method="POST">
   <p>
   User ID:<br />
   <input type="text" name="username"><br />
   Password:<br />
   <input type="password" name="pass" ><br />
   <br />
   <input type="submit" value="Login">

然后进行如下验证

// Connect to server and select database.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 

mysql_select_db("$db_name")or die("cannot select DB");

$username = mysql_real_escape_string($username);
$pass = mysql_real_escape_string($pass);

SELECT * FROM $tbl WHERE username='$username' and pass= SHA1('$pass');

//$result=mysql_query($sql);

$result=mysql_query($sql, $connect) or die(" Could not execute query");
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

我知道与服务器的联系是正确的,因为我已经测试了那个位的错误,但无论我尝试什么,我都无法通过语句

  

“无法执行查询”

表格标题为usernamepass,密码在服务器上加密。

我是新手,就这一点而言,无法理解PHP手册。

主持人是1and1,他们使用Apache server

3 个答案:

答案 0 :(得分:1)

您没有将查询放在字符串中

你没有正确传递你的价值

您尚未关闭HTML

中的<form>标记
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 

mysql_select_db("$db_name")or die("cannot select DB");

$username = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string($_POST['pass']);

$sql = "SELECT * FROM $tbl WHERE username='$username' and pass= SHA1('$pass')";

$result=mysql_query($sql, $connect) or die(" Could not execute query");

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

你也应该使用mysqli,而不是不推荐使用mysql。

答案 1 :(得分:0)

// Connect to server and select database.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 

mysql_select_db("$db_name")or die("cannot select DB");

$username = mysql_real_escape_string($username);
$pass = mysql_real_escape_string($pass);
//EDIT 
$sql = SELECT * FROM $tbl WHERE username='$username' and pass= SHA1('$pass');

//$result=mysql_query($sql);

$result=mysql_query($sql, $connect);
if(!$result) {
    die('ERROR: ' . mysql_error());
}
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

答案 2 :(得分:0)

看起来$ sql变量实际上从未设置为任何东西,这可能导致您的问题。此外,您正在使用不推荐使用的mysql扩展并替换为mysqli扩展。与msyqli连接的一个例子(这是一个非常相似的扩展名):

http://www.w3schools.com/php/php_mysql_connect.asp