Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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 无法从SQL查询中获取预期结果_Php_Mysql_Sql - Fatal编程技术网

Php 无法从SQL查询中获取预期结果

Php 无法从SQL查询中获取预期结果,php,mysql,sql,Php,Mysql,Sql,这是我的桌子 Field Type Null Key Default Extra id_key int(11) NO PRI NULL auto_increment tbl_users_username varchar(255) YES UNI NULL tbl_users_password varchar

这是我的桌子

Field                   Type            Null    Key     Default  Extra
id_key                  int(11)         NO      PRI     NULL     auto_increment
tbl_users_username      varchar(255)    YES     UNI     NULL
tbl_users_password      varchar(32)     YES             NULL
tbl_users_identifier    varchar(32)     YES             NULL
tbl_users_token         varchar(32)     YES             NULL
tbl_users_access_type   int(1)          YES             NULL
tbl_users_timeout       int(10)         YES             NULL
这是我的密码

$query = "SELECT * FROM tbl_users where tbl_users_username = '$_POST[email_address]'" ;
$result = mysql_query($query);
if($result)
{
    echo "TRUE";        
}
else
{
    echo "FALSE";
}

连接到数据库时没有问题。当我运行查询时,问题出现了。无论电子邮件是否在表中,它都会返回$result。我错过了什么?如果电子邮件地址存在于表中,则应回显true;如果电子邮件地址不在表中,则应回显false。

$\u POST[email\u address]
应使用单引号或双引号,我想:

$\u POST[“电子邮件地址”]
$\u POST[“电子邮件地址”]

$query = "SELECT * FROM tbl_users where tbl_users_username = '" . $_POST['email_address'] . "'" ;
但是,正如@Fabiocata所说,您必须获取结果或计算返回的行数,以实现您的目标:

$query = "SELECT 1 FROM tbl_users where tbl_users_username = '" . $_POST['email_address'] . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) === 1) {
    echo "TRUE";        
} else {
    echo "FALSE";
}

$\u POST[电子邮件地址]
应该使用单引号或双引号,我想:

$\u POST[“电子邮件地址”]
$\u POST[“电子邮件地址”]

$query = "SELECT * FROM tbl_users where tbl_users_username = '" . $_POST['email_address'] . "'" ;
但是,正如@Fabiocata所说,您必须获取结果或计算返回的行数,以实现您的目标:

$query = "SELECT 1 FROM tbl_users where tbl_users_username = '" . $_POST['email_address'] . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) === 1) {
    echo "TRUE";        
} else {
    echo "FALSE";
}

下面的查询将根据“已发布的电子邮件地址”值中的值选择tbl_users_username值。因此,请使用以下查询:

$query = 
"SELECT * FROM tbl_users where tbl_users_username = '".$_POST['email_address']."';";

下面的查询将根据“已发布的电子邮件地址”值中的值选择tbl_users_username值。因此,请使用以下查询:

$query = 
"SELECT * FROM tbl_users where tbl_users_username = '".$_POST['email_address']."';";

结果将被返回(如果您进行了有效的查询)用于检查邮件是否存在。
如果可以,请实际使用PDO。结果将返回(如果您进行了有效的查询),但请使用检查邮件是否存在。
如果可以,请实际使用PDO如果使用PHP的
mysql_num_rows
函数,您应该能够返回行数,并且您的逻辑将正常工作。因此,请尝试以下方法:

$num = mysql_num_rows($result);
if ($num > 0) {
    echo "TRUE";
}else{
    echo "FALSE";
}

如果您使用PHP的
mysql\u num\u rows
函数,您应该能够返回行数,并且您的逻辑将正常工作。因此,请尝试以下方法:

$num = mysql_num_rows($result);
if ($num > 0) {
    echo "TRUE";
}else{
    echo "FALSE";
}

我建议你打印出你的查询,以确定它是100%的查询,你期望它

除此之外,您还要检查:


$result=mysql\u query($query)

如果($结果)

这将检查是否从查询中返回了资源。如果您的查询有效,那么根据,您应该始终拥有一个资源

建议代码:


$result=mysql\u query($query)

代码说明:

  • 从查询中获取资源
  • 如果返回了有效的资源,请继续并检查提取的记录数 从这个查询中
  • 如果未返回资源,则else部分会回显失败消息
  • 我强烈建议你们考虑使用图书馆


    简要介绍PDO的优势:

  • 允许您轻松地使用预置语句(预置语句非常安全!!!)

  • PDO可以连接到各种不同的数据库,包括MySQL,但也可以连接其他数据库

  • 在我看来,它很容易使用,也很容易为新来者挑选

  • 堆栈溢出使用提示:

  • 始终使用右上角的搜索。很多人都遇到过可能对你有帮助的问题
  • 总是看一看
  • 反馈&如果需要,请始终询问更多问题
    我建议你打印出你的查询,以确定它是100%的查询,你期望它

    除此之外,您还要检查:

    
    $result=mysql\u query($query)

    如果($结果)

    这将检查是否从查询中返回了资源。如果您的查询有效,那么根据,您应该始终拥有一个资源

    建议代码:

    
    $result=mysql\u query($query)

    代码说明:

  • 从查询中获取资源
  • 如果返回了有效的资源,请继续并检查提取的记录数 从这个查询中
  • 如果未返回资源,则else部分会回显失败消息
  • 我强烈建议你们考虑使用图书馆


    简要介绍PDO的优势:

  • 允许您轻松地使用预置语句(预置语句非常安全!!!)

  • PDO可以连接到各种不同的数据库,包括MySQL,但也可以连接其他数据库

  • 在我看来,它很容易使用,也很容易为新来者挑选

  • 堆栈溢出使用提示:

  • 始终使用右上角的搜索。很多人都遇到过可能对你有帮助的问题
  • 总是看一看
  • 反馈&如果需要,请始终询问更多问题 这将修复您遇到的任何问题,或者至少为您提供一条方便的错误消息


    这应该可以解决您遇到的任何问题,或者至少给您一条方便的错误消息来解决。

    您是否尝试打印$query以确保它包含您认为它包含的内容?@andrewsi是正确的。首先打印出查询,以查看您是否正确构建了它。正如塞巴斯在回答中所说,你似乎需要将你的帖子连接起来myemail@email.com$query=从tbl\U用户中选择*,其中tbl\U用户\U用户名=myemail@email.com'Change
    $result=mysql\u query($query)
    to
    $result=mysql\u query($query)或die(mysql\u error())
    并告诉我们它说了什么。@WilliamMichaelVondran-请接受下面任何一个你认为可以接受的答案。这将帮助其他遇到您问题的SO用户。您是否尝试打印$query以确保它包含您认为它包含的内容?@andrewsi是正确的。首先打印出查询,以查看您是否正确构建了它。看来你需要