从数据库服务器获取数据不起作用

vlf7wbxs  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(277)

我是个初学者,我需要一点帮助
我创建了这段php代码,以便从数据库的“profiles”表中获取用户信息(注意:变量$username已经定义):

<?php

//getting the data from the Database

$aVar = mysqli_connect('localhost','root','','socialnetwork');
$usernameaccount = mysqli_query($aVar, "SELECT username FROM users WHERE username = '$username'");

$age = mysqli_query($aVar, "SELECT p.age FROM profiles p, users u WHERE u.username = '$username' AND u.id = p.id");

$gender = mysqli_query($aVar, "SELECT p.gender FROM profiles p, users u WHERE u.username = '$username' AND u.id = p.id");

$description = mysqli_query($aVar, "SELECT p.description FROM profiles p, users u WHERE u.username = '$username' AND u.id = p.id");

//after getting the data i insert them into a variable with some html code:

$outputusername = '<h2>'.$usernameaccount.'<hr></h2>';
$outputage = '<h2>'.$age.'<hr></h2>';
$outputgender = '<h2>'.$gender.'<hr></h2>';
$outputdescription = '<h2>'.$description.'<hr></h2>';

?>

而不是在html代码中的某个地方,我像这样回显它们:

<div class="info">
    <?php
        echo $outputusername;
        echo $outputage;
        echo $outputgender;
        echo $outputdescription;
    ?>
</div>

不知怎的,它给了我一个错误信息:
可恢复的致命错误:在第10行的c:\xampp\htdocs\ping.com\profile.php中,类mysqli\u result的对象无法转换为字符串
有人能帮我从我的数据库中以正确的方式获取这些数据并用html代码显示它们吗?如果你需要更多的信息,请尽管问。

du7egjpx

du7egjpx1#

你有点不对劲。让我来指导你: mysqli_query 结果a mysqli_result ,这是从数据库访问值所需的。
你会有

$result = mysqli_query($conn, 'your_sql);

然后通过结果可以获取返回的行。因为返回的是单行,所以可以执行以下操作:

$row = mysqli_fetch_row($result);

现在 $row 当然,如果查询成功,将是一个包含字段的数组。
您可以将这些值存储在变量中。
您可能还希望联接表以便执行单个查询,并选择所需的列。
它看起来是这样的:

<?php

    $aVar = mysqli_connect('localhost','root','','socialnetwork');

    $result = mysqli_query($aVar, "SELECT p.username, p.age, p.gender, p.description from users u join profiles p on (p.id = u.id) where u.username='$username'");

    $row = mysqli_fetch_row($result);

    $age = $row['age'];
    $gender = $row['gender'];
    $description = $row['description'];

    $outputusername = '<h2>'.$username.'<hr></h2>';
    $outputage = '<h2>'.$age.'<hr></h2>';
    $outputgender = '<h2>'.$gender.'<hr></h2>';
    $outputdescription = '<h2>'.$description.'<hr></h2>';

?>
z9ju0rcb

z9ju0rcb2#

我建议您阅读mysql fetch\u array手册和mysql fetch\u assoc手册——但要点如下。
你正在返回一个 object ,不是 string . 但你却在试图 echo 它就像是一个 string . 所以我们要做的是把你的 objectstring 或者 array .
在这种情况下,最简单的方法就是 fetch_array --返回一个数组,然后拉第一个 index 这个数组的 [0] 在您的代码中看起来是这样的:

<?php

//getting the data from the Database

$aVar = mysqli_connect('localhost','root','','socialnetwork');
$usernameaccount = mysqli_query($aVar, "SELECT username FROM users WHERE username = '$username'")->fetch_array()[0];

$age = mysqli_query($aVar, "SELECT p.age FROM profiles p, users u WHERE u.username = '$username' AND u.id = p.id")->fetch_array()[0];

$gender = mysqli_query($aVar, "SELECT p.gender FROM profiles p, users u WHERE u.username = '$username' AND u.id = p.id")->fetch_array()[0];

$description = mysqli_query($aVar, "SELECT p.description FROM profiles p, users u WHERE u.username = '$username' AND u.id = p.id")->fetch_array()[0];

//after getting the data i insert them into a variable with some html code:

$outputusername = '<h2>'.$usernameaccount.'<hr></h2>';
$outputage = '<h2>'.$age.'<hr></h2>';
$outputgender = '<h2>'.$gender.'<hr></h2>';
$outputdescription = '<h2>'.$description.'<hr></h2>';

?>
k2arahey

k2arahey3#

假设你回来了ì每排一个。。每个结果都需要一个fetch

$aVar = mysqli_connect('localhost','root','','socialnetwork');
$resultUser = mysqli_query($aVar, "SELECT username FROM users WHERE username = '$username'");

$rowUser = $resultUser->fetch_assoc();

$result  = mysqli_query($aVar, "SELECT p.age, p.gender , p.description FROM profiles p, users u WHERE u.username = '$username' AND u.id = p.id");

$row = $result->fetch_assoc();

//after getting the data i insert them into a variable with some html code:

$outputusername = '<h2>'. $rowUser['username'].'<hr></h2>';
$outputage = '<h2>'. $row['age'].'<hr></h2>';
$outputgender = '<h2>'.$row['gender'].'<hr></h2>';
$outputdescription = '<h2>'.$row['description'].'<hr></h2>';

你可以用一个查询选择所有你需要的列

相关问题