我是PHP和Mysql的新手,如果我看起来很傻,请原谅我
我正致力于通过UserSpice Framework制作网络应用。
我的查询是我需要显示登录用户的角色。就像他是管理员一样,然后以管理员身份回复
我从users表中获取登录用户的Permission id,并将其与Permission表中的权限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和name。
Users表有很多字段,其中id是其中一个,其id与权限表中的id值相同。
答案 0 :(得分:2)
好的,所以我之前从未见过User Spice,但它看起来像是基于PDO。
正在发生的事情是$ query-&gt; results()给你一个数组(从数据库返回的记录)数组(并且每个记录都是一个字段数组),即使你应该回来一个来自一条记录的字段。使用此特定功能,就像电子表格一样,无论您是填充了一个还是10000个单元格,您都需要指定该值所在的列(字段)和行(记录),然后才能使用它。您不能只回显一个数组数组,因此Array to string转换通知。
听起来有些基本原则你可能应该加以研究。我没有给你我的通用建议,而是查看他们的DB类视频教程(http://www.userspice.com/documentation-db-class-2/)的第3部分,不仅要保护其中的一些基础知识,还要了解如何按照这种方式做事。你的框架希望你这样做。如果您没有像创作者想要的那样使用该工具,这些事情通常会更加困难。
答案 1 :(得分:1)
我终于得到了所需的输出,所以认为它可以帮助别人,所以我回答了我自己的问题。
<?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/>';;
}
?>
答案 2 :(得分:0)
我认为这是你正在寻找的......
$sql= "select name from permission where id=users.permissions";
$rslt = $conn->query($sql);
foreach($rslt as $newArray){
$roleName = $newArray['name'];
echo "$roleName<br>";
}