【问题标题】:problem in php when retrieving data from database从数据库中检索数据时php中的问题
【发布时间】:2011-09-16 04:42:55
【问题描述】:

我有一个关于从数据库中检索数据的问题。我在 userrecord 中创建了一个数据库,它的表名为 tbl_user。我试图在他们登录系统时显示用户信息。即查看记录的用户配置文件。代码如下:

<?php
    include("auth_user.inc.php"); // authrization page
    $uname=$_SESSION['user']; // logged user name
    $connection=mysql_connect("localhost","root"," ");
    mysql_select_db("userrecord",$connection);
    $sql=("select * from table_user where uname ='$uname'");
    $result=@mysql_query($sql,$connection);
    $row=mysql_fetch_array($result);
?>
<html>
    <head>
        <title>User Account</title>
    </head>
    <body bgcolor="#33CCFF">
        <br>Your Details Information Is Shown Below:<br><br>
        First Name:<?php echo $row['fname'];?><br>
        Last Name:<?php echo $row['lname'];?><br>
        Address:<?php echo $row['address'];?><br>
        E-Mail:<?php echo $row['email'];?><br>
        Gender:<?php echo $row['fname'];?><br>
        User Name:<?php echo $row['uname'];?><br>
    </body>
</html>

代码 echo $row[' '] 没有显示数据库中的记录。

【问题讨论】:

  • 如果你回显 $uname 是否会显示预期的结果?
  • 试试 var_dump($row) 看看有什么输出。这将告诉您是否在数组中得到结果。如果您得到结果,您将看到数据是如何返回的并知道如何访问它。
  • 同样把@放在mysql_query之前意味着如果你的查询有任何错误,你不会看到它,删除@,如果只是一段时间看看你是否看到任何错误
  • 尝试在你的 MySQL 中手动运行这个查询...然后看看它会检索到什么结果..Thx
  • 如果你只是学习,你也应该放弃 php mysql 库以获得更安全的 mysqli 和 PDO 替代品。

标签: php mysql database


【解决方案1】:

尝试:

<?php
    include("auth_user.inc.php"); // authrization page
    $uname = $_SESSION['user']; // logged user name
    $connection = mysql_connect("localhost","root"," ") or die('Could not connect to database: '.mysql_error());
    mysql_select_db("userrecord",$connection) or die('Could select database: '.mysql_error());
    $sql = "select * from table_user where uname ='$uname'";
    $result = mysql_query($sql) or die ('Mysql error: '.mysql_error.' - '.mysql_errno());
    $row = mysql_fetch_array($result);
?>

【讨论】:

    【解决方案2】:

    它的表名是tbl_user

    你的 SQL 是 table_user?

    无论如何,我没有看到其他人对您的代码有错误,仅此而已。如果是错字,请尝试调试您的连接,并给我们错误消息...

    【讨论】:

      【解决方案3】:

      不需要这个@符号:

      $result=@mysql_query($sql,$connection);
      

      更正:

      $result=mysql_query($sql,$connection);
      

      【讨论】:

      • 那是错误停止,他可以使用:$result=mysql_query($sql,$connection) or die('Mysql Connection');
      • 这一点帮助都没有,因为你所做的只是移除错误抑制。
      • 如果他们的代码不能工作的原因是因为 sql 错误,那么移除错误抑制会有所帮助。
      猜你喜欢
      • 2010-11-09
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多