Php 从UserSpice中的数据库获取数据

Php 从UserSpice中的数据库获取数据,php,mysql,database,Php,Mysql,Database,我是PHP和Mysql的新手,所以如果我看起来很傻,请原谅我 我正在制作一个基于UserSpice框架的web应用程序 我的问题是我需要显示登录用户的角色。就像他是管理员一样,然后以管理员的身份回应 我正在从users表中获取登录用户的权限id,并将其与权限表中的权限id进行比较,然后尝试从权限表中获取角色的名称。但它显示以下错误 Notice: Array to string conversion in C:\xampp\htdocs\***\account.php on line 477

我是PHP和Mysql的新手,所以如果我看起来很傻,请原谅我

我正在制作一个基于UserSpice框架的web应用程序

我的问题是我需要显示登录用户的角色。就像他是管理员一样,然后以管理员的身份回应

我正在从users表中获取登录用户的权限id,并将其与权限表中的权限id进行比较,然后尝试从权限表中获取角色的名称。但它显示以下错误

Notice: Array to string conversion in C:\xampp\htdocs\***\account.php on line 477 
Array 
我的问题如下

<?php 
$query =$db->query("select name from permission where permission.id=users.permissions"); 
$results = $query->results(); 
echo $results; 
?>
有关信息:

权限表有两个字段id和名称


Users表有许多字段,其中id是其中之一,它的id值与permission表中的id值相同

我想这就是你要找的

$sql= "select name from permission where id=users.permissions";
$rslt = $conn->query($sql);

foreach($rslt as $newArray){
    $roleName = $newArray['name'];
    echo "$roleName<br>";
}

我想这就是你要找的

$sql= "select name from permission where id=users.permissions";
$rslt = $conn->query($sql);

foreach($rslt as $newArray){
    $roleName = $newArray['name'];
    echo "$roleName<br>";
}

好的,所以我以前从未见过用户Spice,但看起来它是基于PDO的

现在发生的是$query->results为您提供了一个从数组的DB返回的记录数组,并且每个记录都是一个字段数组,即使您应该从一个记录返回一个字段。使用这个特殊的函数,就像电子表格一样,无论是填充一个单元格还是10000个单元格,都需要指定值所在的列字段和行记录,然后才能使用它。不能只回显数组数组,因此需要注意数组到字符串的转换


听起来有一些基本的东西你应该好好复习一下。与其给你我的一般性建议,我还想看看他们的DB类视频教程的第3部分,不仅可以确保这些基础知识的安全,还可以了解如何按照框架要求的方式进行操作。如果您没有按照创建者的预期方式使用该工具,这类事情通常会更加困难。

好的,所以我以前从未见过用户Spice,但它看起来好像是基于PDO的

现在发生的是$query->results为您提供了一个从数组的DB返回的记录数组,并且每个记录都是一个字段数组,即使您应该从一个记录返回一个字段。使用这个特殊的函数,就像电子表格一样,无论是填充一个单元格还是10000个单元格,都需要指定值所在的列字段和行记录,然后才能使用它。不能只回显数组数组,因此需要注意数组到字符串的转换


听起来有一些基本的东西你应该好好复习一下。与其给你我的一般性建议,我还想看看他们的DB类视频教程的第3部分,不仅可以确保这些基础知识的安全,还可以了解如何按照框架要求的方式进行操作。如果你没有按照创作者希望的方式使用该工具,这类事情通常会困难得多。

我最终获得了所需的输出,因此认为它可能会帮助其他人,所以我回答了自己的问题

<?php
$query = $db->query("SELECT * FROM user_permission_matches WHERE user_id = ?", array($user->data()->id));
$x = $query->results(true); //dump($x); 
foreach ($x as $y){ //dump($y); 
$perm_id=$y["permission_id"]; 
$query = $db->query("SELECT * FROM permission WHERE id = ?", array($perm_id)); 
$z = $query->results(true); //dump($z[0]); 
$perm_name=$z[0]["name"]; 
echo $perm_name.'<br/>';; 
}
?>

我最终得到了所需的输出,因此认为它可能会帮助其他人,因此我回答了自己的问题

<?php
$query = $db->query("SELECT * FROM user_permission_matches WHERE user_id = ?", array($user->data()->id));
$x = $query->results(true); //dump($x); 
foreach ($x as $y){ //dump($y); 
$perm_id=$y["permission_id"]; 
$query = $db->query("SELECT * FROM permission WHERE id = ?", array($perm_id)); 
$z = $query->results(true); //dump($z[0]); 
$perm_name=$z[0]["name"]; 
echo $perm_name.'<br/>';; 
}
?>

$results显然是一个数组。使用打印结果;代替echo@Matt谢谢你的回复。在做了这些更改之后,我得到了数组[0]=>stdClass对象[id]=>100,您可以使用$results[0]->id访问它@Matt实际上输出为100。重点是我想在Permission表中输出name字段,它也是管理员,顺便说一句,没有像100 mate这样的id。$results显然是一个数组。使用打印结果;代替echo@Matt谢谢你的回复。在做了这些更改之后,我得到了数组[0]=>stdClass对象[id]=>100,您可以使用$results[0]->id访问它@Matt实际上输出为100。重点是我想在权限表中输出名称字段,它也是管理员,顺便说一句,没有像100 mate这样的id。mate在我的例子中不是$conn->query$sql;而是它的$db->query$sql。但是现在我没有收到任何错误没有输出mate.mate在我的例子中不是$conn->query$sql;而是它的$db->query$sql。但是现在我没有收到任何错误,没有输出伙伴。谢谢你的建议,伙伴。正如你提到的那样,我将对此进行调查。然而,在他们的文档中,他们提到我们可以使用通用结构和通用结构,在这个框架上工作不需要框架通用结构。可能正在看那个视频会给我一个清晰的画面。谢谢你,伙计。@RajaGopal祝你好运。第三个视频确实详细介绍了如何查询数据库,以及如何使用PDO获得结果。正如你提到的那样,我将对此进行调查。然而,在他们的文档中,他们提到我们可以使用通用结构和通用结构,在这个框架上工作不需要框架通用结构。可能正在看那个视频会给我一个清晰的画面。谢谢你,伙计。@RajaGopal祝你好运。第三个视频确实详细说明了如何查询数据库
,并使用PDO获得结果。感谢使用UserSpice!我希望你喜欢。如果有什么我能帮忙的,请告诉我。你可以随时在这里或在userspice.com论坛上给我发信息,谢谢你使用userspice!我希望你喜欢。如果有什么我能帮忙的,请告诉我。你可以在这里或在userspice.com的论坛上给我留言