Php 我无法执行我的登录

Php 我无法执行我的登录,php,mysql,apache,database-connection,server,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 /

我有一个登录表单,上面写着

<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">
我知道与服务器的联系是正确的,因为我已经测试了该位的错误,但是无论我怎么做,我都无法通过该语句

“无法执行查询”

表标题为
username
pass
,密码在服务器上加密

我是一个新手,不能理解PHP手册中的这一点


主机是
1和
,它们使用的是
Apache服务器

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

您没有正确地传递值

您尚未关闭HTML中的
标记

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。

看起来$sql变量实际上从未设置为任何值,这可能会导致您的问题。此外,您正在使用mysql扩展,该扩展已被弃用并替换为mysqli扩展。连接msyqli的一个示例(它是一个非常类似的扩展):

// 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);

将您的
die
更改为
die(mysql\u error())
以查看真正的错误。
哪里定义了$sql?
我定义了$sql=“SELECT--etc”,并将die更改为您的推荐,得到了一个空白页。这意味着mysql没有任何问题吗?添加这两行
错误报告(E\u all);ini\u set('display_errors',1);
在php代码的顶部,在
谢谢你的建议之后,我现在有点进一步,加上我做了一些非常愚蠢的事情。我现在已经去掉了SHA1位,正在测试未加密的密码,以便我可以看到发生了什么。表单标记已关闭,我忘记复制它-抱歉。我已经修复了丢失的$sql=”选择etc,它仍然不起作用。我只收到一条消息ERROR:now,但在文件开头(php标记内)没有errorsput
ERROR\u reporting(E\u ALL);
看看这是否能给你更多的信息谢谢你这么多。现在我知道该解决什么了。它给了我一些警告和通知。我现在会处理它们,希望它能起作用。作为一个新手,要知道所有的皱纹并不容易。我会保留这个字符串以帮助解决更多的问题。哦,天哪,这只会给我一页关于ERRO的信息R:在它上面,什么都没有。一旦这一小部分正常运行,我将开始测试mysqli,但我确实需要首先运行它。我是否应该放弃“SHA1”并将表中的密码更改为纯文本。这可能与此有关?
// 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);