Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数据库查询每次都返回false_Php_Mysql - Fatal编程技术网

PHP数据库查询每次都返回false

PHP数据库查询每次都返回false,php,mysql,Php,Mysql,我正在用PHP构建一个非常简单的登录服务,每次数据库查询都返回false。我已经使用phpmyadmin将电子邮件地址添加到数据库的users表中,但是当我在字段中输入一个电子邮件地址并按下submit时,查询会转到数据库,每次返回false 代码如下: //queries the database and checks if the email address exists $result = mysqli_query($connection, "SELECT * FROM 'users' W

我正在用PHP构建一个非常简单的登录服务,每次数据库查询都返回false。我已经使用phpmyadmin将电子邮件地址添加到数据库的users表中,但是当我在字段中输入一个电子邮件地址并按下submit时,查询会转到数据库,每次返回false

代码如下:

//queries the database and checks if the email address exists
$result = mysqli_query($connection, "SELECT * FROM 'users' WHERE 'Email'='$email'");
if ($result == FALSE){
die("The account for <i>$email</i> doesn't not exist!");
}
//查询数据库并检查电子邮件地址是否存在
$result=mysqli_query($connection,“从‘用户’中选择*,其中‘Email’=‘Email’”);
如果($result==FALSE){
死(“$email的帐户不存在!”);
}
我知道表单中的email变量是正确的,因为它作为错误打印出来。我还知道数据库中的电子邮件地址与它完全匹配。但是,查询只返回false


谢谢你的帮助

正如@Jared在评论中所说的,您在表和列名上使用了
单引号。您可以将其转换为反勾号,也可以将其删除

如果您的列、表和数据库名称包含在MySQL中,则需要反勾号

因为您使用的是
mysqli.*
。我建议您使用预先准备好的语句,并使用
num_rows
。例如:

// use prepared statements
$stmt = $connection->prepare('SELECT * FROM `users` WHERE `Email` = ?');
//                                           ^ backticks   ^
$stmt->bind_param('s', $email);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0){
    // found
} else {
    die("The account for <i>$email</i> doesn't not exist!");  
}
//使用准备好的语句
$stmt=$connection->prepare('SELECT*FROM'users',其中'Email'=?');
//^backticks^
$stmt->bind_param('s',$email);
$stmt->execute();
$stmt->store_result();
如果($stmt->num_rows>0){
//发现
}否则{
死(“$email的帐户不存在!”);
}

这是因为您正在将一个字符串(“电子邮件”)与另一个字符串(电子邮件地址)进行比较,但它们不匹配。删除
电子邮件周围的
,或者使用反勾号(键盘左上方,靠近
1
键)。不过,只有当您有一个带有保留字的列(使用
date
是一个常见错误)或者列中有空格(这两个都是坏主意)时,才需要使用反勾号。哦,是的,还有来自“用户”的
。你把反勾号误认为是单引号;这些在查询中是不同的。如果您在查询中显示错误,您可能会看到此问题上的错误。如果您只是检查错误,则可以避免此问题。+1可捕获错误,但实际上不需要反勾号,因为
用户
电子邮件
不是保留关键字。避免在不需要的地方使用反勾号。