【问题标题】:Calling values from my sql database isn't working properly从我的 sql 数据库调用值无法正常工作
【发布时间】:2013-06-27 10:46:08
【问题描述】:

这是我的代码:

<?php
include("inc/incfiles/header.inc.php");
session_start();
$user_id = $_SESSION["id"];
if (!isset($_SESSION["id"])) {
    header("location: index.php");
}
else {
    echo "Welcome, user number " . $user_id . ". This is you're newsfeed!";
    echo "<br><a href=\"logout.php\">Log Off?</a>";
}

echo "<br><br>";

$userFname = mysql_query("SELECT first_name FROM users WHERE id=$user_id");
$userLname = mysql_query("SELECT last_name FROM users WHERE id=$user_id");

echo "First Name: " . $userFname . "<br>";
echo "Last Name: " . $userLname . "<br>"; ?>

header.inc.php 文件仅用于 sql 连接和 html 标头。

我现在的问题是,当我调用名字和姓氏时,它只会给出输出“资源 ID #6”和“资源 ID #7”。我不明白为什么它不显示实际的名字和姓氏??

【问题讨论】:

  • 您没有访问结果集上的结果mysql_fetch_assoc(或其他一些类似函数)。您也只需要一个查询即可访问同一张表中的两条数据。
  • 如果已回答,则通过勾选接受答案。
  • 请将正确答案标记为已接受

标签: php html sql phpmyadmin


【解决方案1】:

mysql_query() 返回一个result 资源,而不是实际数据。

您需要使用fetch 函数之一提取数据。您的代码应如下所示:

$result = mysql_query("SELECT first_name, last_name FROM users WHERE id=$user_id");
if ($result === false) {
     echo mysql_error;

} else {
 list ($userFname, $userLname) = mysql_fetch_array($result);
}

【讨论】:

    【解决方案2】:

    函数“mysql_query”实际上并没有返回结果值,接下来你需要这样调用:

    $result = mysql_query("SELECT first_name FROM users WHERE id=$user_id");
    $row = mysql_fetch_assoc($result);
    $userFname = $row["first_name"];
    
    $result = mysql_query("SELECT last_name FROM users WHERE id=$user_id");
    $row = mysql_fetch_assoc($result);
    $userLname = $row["last_name"];
    

    甚至更好:

    $result = mysql_query("SELECT first_name, last_name FROM users WHERE id=$user_id");
    $row = mysql_fetch_assoc($result);
    if($result) {
        $userFname = $row["first_name"];
        $userLname = $row["last_name"];
    }
    

    【讨论】:

    • 无需进行两次查询 - 只需 select first_name, last_name...
    • 谢谢@MikeW,刚刚补充了:)
    【解决方案3】:

    函数mysql_query 返回一个您仍需要解析的结果集。添加这一步:

    $result = mysql_query("SELECT first_name FROM users WHERE id=$user_id");
    $userFname = mysql_fetch_object($result);
    echo $userFname->first_name; //will print the user's first name
    

    mysql_fetch_object 将用表的列作为属性初始化一个对象。

    鉴于您的情况,我可能只会获取一个用户记录并使用同一对象中的两个名称属性:

    $result = mysql_query("SELECT * FROM users WHERE id=$user_id");
    $user = mysql_fetch_object($result);
    echo $user->first_name;
    echo $user->last_name;
    

    【讨论】:

      【解决方案4】:

      PHP 的mysql_query() 函数不会返回SELECT 子句中的“东西”。相反,它会返回一个资源,您可以使用它来获取这些“东西”。

      试试这个:

      // Obtain the resource:
      $resource = mysql_query("SELECT first_name FROM users WHERE id=$user_id");
      
      // From that resource, get a row of data as an associative array
      // The keys in that array will match the names in your SELECT clause
      $row = mysql_fetch_assoc($resource);
      
      echo "First Name: " . $row['first_name'] . "<br/>";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        相关资源
        最近更新 更多