当按用户名选择用户数据时,PHP Mysql查询不输出任何内容

当按用户名选择用户数据时,PHP Mysql查询不输出任何内容,php,mysql,select,Php,Mysql,Select,我试图通过使用 以下代码,但它输出“无选择”。重要的是要注意,当我用数据库中的真实用户名替换“$username”时,它可以正常工作。这是完整的代码 <?php mysql_connect("localhost", "root", "")or die("cannot connect"); mysql_select_db("my_databse")or die("cannot select DB"

我试图通过使用 以下代码,但它输出“无选择”。重要的是要注意,当我用数据库中的真实用户名替换“$username”时,它可以正常工作。这是完整的代码

                      <?php 
            mysql_connect("localhost", "root", "")or die("cannot connect"); 
            mysql_select_db("my_databse")or die("cannot select DB"); 
             mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error());

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

       $sql="SELECT * FROM cv_users WHERE username LIKE '$username'"; 
       $result=mysql_query($sql); 

       $count=mysql_num_rows($result); 

       if( mysql_num_rows( $result ) === 1 ){ 
        $row = mysql_fetch_assoc( $result ); 
        $email = $row[ 'email' ];
        $cv_txt = $row[ 'cv_txt' ];
         $cv_txt = mysql_real_escape_string($cv_txt); 
         } 
         else { 
        echo 'no selection'; 
          }
           ?>
          <?php 
           echo $row[ 'cv_txt' ]; 
          ?>

您需要理解“和”之间的区别

简单地说,PHP解释器将解析“between”文本,而“between”文本只是文本

在您的示例中,MYSQL将搜索用户名为“$username”的用户,而不是搜索变量$username的值

但是在您的例子中,$username需要加引号,否则MYSQL将无法工作。以下是您如何做到这一点:

$sql=“从用户名为“.$username.”的cv_用户中选择*


希望这能有所帮助。

你需要理解“和”之间的区别

简单地说,PHP解释器将解析“between”文本,而“between”文本只是文本

在您的示例中,MYSQL将搜索用户名为“$username”的用户,而不是搜索变量$username的值

但是在您的例子中,$username需要加引号,否则MYSQL将无法工作。以下是您如何做到这一点:

$sql=“从用户名为“.$username.”的cv_用户中选择*


希望这有帮助。

您确定php正确获取用户名吗?也许你可以先尝试回显用户名(或调试),这样你就可以确定你得到了用户名。

你确定php得到了正确的用户名吗?也许你可以先尝试回显用户名(或调试),这样你就可以确定你得到了用户名。

你的问题是你在寻找一个结果,并且你在php字符串变量周围添加了一个额外的“”,你可以删除它

您当前的查询:

$sql="SELECT * FROM cv_users WHERE username LIKE '$username'"; 
这表示您将在有用户名(如$username)的地方获取所有内容 这也是不正确的,因为您没有考虑字符串中的php变量

你可以把这个改成

$sql="SELECT * FROM cv_users WHERE username LIKE '".$username."'"; 

如果用户名匹配,则返回1个用户;如果用户名不匹配,则根本不会有结果

这将在稍后进行清理:

if( mysql_num_rows( $result ) === 1 ){ 
当您已经将
$count
定义为
mysql\u num\u行($result
)时,这里存在代码重复


当遇到这样的问题时,应该进行调试,在页面中回显SQL查询,然后直接执行到MySQL中,这会为您产生错误。

您的问题是您正在查找1个结果,并且在php字符串变量周围添加了一个额外的“”,您可以删除该值

您当前的查询:

$sql="SELECT * FROM cv_users WHERE username LIKE '$username'"; 
这表示您将在有用户名(如$username)的地方获取所有内容 这也是不正确的,因为您没有考虑字符串中的php变量

你可以把这个改成

$sql="SELECT * FROM cv_users WHERE username LIKE '".$username."'"; 

如果用户名匹配,则返回1个用户;如果用户名不匹配,则根本不会有结果

这将在稍后进行清理:

if( mysql_num_rows( $result ) === 1 ){ 
当您已经将
$count
定义为
mysql\u num\u行($result
)时,这里存在代码重复


遇到这样的问题时,应该进行调试,在页面中回显SQL查询,然后直接在MySQL中执行该查询,这将为您产生错误。

您的问题是,您正在查找与提供的用户名匹配的任何内容

$sql = "SELECT * FROM cv_users WHERE username LIKE '$username'";
您应该做的是获取用户名所提供的数据:

$sql="SELECT * FROM cv_users WHERE username = '{$username}'"; 
现在,使用
PDO
(见脚注)可以更轻松地完成这项工作

我不会用勺子喂你所有的代码,其余的由你自己来实现:)


脚注 整体折旧,你应该避免使用它

从PHP5.5.0开始,此扩展已被弃用,不推荐使用 用于编写将来将被删除的新代码。相反, 应该使用mysqli或PDO_MySQL扩展 MySQL API概述,以获取选择MySQL API时的进一步帮助

您应该使用以下两种方法之一:


您的问题是您正在寻找与提供的用户名匹配的任何内容

$sql = "SELECT * FROM cv_users WHERE username LIKE '$username'";
您应该做的是获取用户名所提供的数据:

$sql="SELECT * FROM cv_users WHERE username = '{$username}'"; 
现在,使用
PDO
(见脚注)可以更轻松地完成这项工作

我不会用勺子喂你所有的代码,其余的由你自己来实现:)


脚注 整体折旧,你应该避免使用它

从PHP5.5.0开始,此扩展已被弃用,不推荐使用 用于编写新代码,因为它将在将来被删除。相反 应该使用mysqli或PDO_MySQL扩展。另见 MySQL API概述,以获取选择MySQL API时的进一步帮助

您应该使用以下两种方法之一:


    • 问题似乎出在Post方法上,因为我更改了它以使其正常工作。谢谢大家

      问题似乎出在Post方法上,因为我更改了它以使其正常工作。谢谢大家

      “完整代码”
      包括您的连接?您发布的用户名是什么?请在查询之前打印$username!!!它的值正确吗?你能格式化你的源代码吗?我已经很久没有看到这样的噩梦了:)事实上,我在sql查询之前尝试回显用户名,但它什么也没有输出。我看不出有什么问题?
      包括您的连接在内的“完整代码”
      ?您发布的用户名是什么?请在查询之前打印$username!!!它的值正确吗?请格式化好吗