【发布时间】:2020-07-05 11:31:13
【问题描述】:
我有一个名为 rasivdb 的数据库,其中有一个名为“users”的表,其中有一列“owner”。此列确定哪个管理员创建了该用户,以及当管理员登录时,将列出他创建的所有用户。为此,我只想获取当前会话中“所有者”等于“名称”的用户。所以只有登录管理员创建的用户才会被列出
但是我遇到了一个错误。 我得到的错误是:
Warning: pg_query() expects parameter 1 to be resource, object given in C:\xampp\htdocs\FileSender\menu.php on line 33
Warning: pg_fetch_assoc() expects parameter 1 to be resource, null given in C:\xampp\htdocs\FileSender\menu.php on line 40
我的数据库似乎没有成为资源?我该怎么做?
我得到错误的菜单文件:
<?php
$ownername;
if (isset($_SESSION['name'])) {
$ownername = $_SESSION['name'];
}
?>
<div class="sidebar">
<!-- start user list -->
<ul class="nav">
<?php
//get data by databas class
if (isset($_SESSION['name'])) {
/*$db->select('users')->where('owner', $ownername);
$result = $db->get();*/
$result = pg_query($db, "SELECT * FROM user WHERE owner='$ownername'");
/**
* $result must not be null or zero
* check $result
*/
while($row=pg_fetch_assoc($result)) {
/*foreach ($result as $row) {*/
/**
* variable to save selection state of menu item
*/
$active_state = "";
/**
* check $_GET['user'] variable
* if no set, use info of user that logged in
*/
if (isset($_GET['user'])) {
/**
* compare two variable
* if two variable is same, this item is active.
*/
if ($_GET['user'] == $row['1']) {
$active_state = "active";
}
} else {
/**
* if $_GET['user'] doesn't exist, check $_SESSION['name']
* it is needed when user log in.
* when user log in, $_GET['user'] doesn't exist but item for user must be active
*/
if ((isset($_SESSION['name']) && $_SESSION['name'] == $row['1'])) {
$active_state = "active";
/*}*/
}
}
?>
<!-- output each user -->
<li>
<a href="images.php?user=<?php echo $row["1"] ?>" class="nav-item <?php echo $active_state ?>"><?php echo $row["1"] ?></a>
<?php
if ($active_state != "" && isset($categories) && count($categories) > 0) {
/**
* category block for each user
*/
echo '<ul class="sub-menu">';
foreach ($categories as $item) {
if ($item['1'] == $cat) {
echo '<li ><a class="nav-item active" href="./images.php?user=' . $row['1'] . '&cat=' . $item['1'] . '">' . $item['1'] . '</a></li>';
} else {
echo '<li ><a class="nav-item" href="./images.php?user=' . $row['1'] . '&cat=' . $item['1'] . '">' . $item['1'] . '</a></li>';
}
}
echo "</ul>";
}
?>
</li>
<!-- end -->
<?php
}
if( isset( $_SESSION['role'] ) && $_SESSION['role'] == "admin"){
echo '<li><a class="nav-item" href="./admin.php">Admin</a></li>';
if (isset($_SESSION['name'])) {
echo $_SESSION['name'];
}
}
}
else {
//
}
?>
</ul>
<!-- end user li st -->
</div>
为了您的信息,此文件仅用于在 index.php 中调用的sidemenu,其中连接了数据库并激活了 session_start()。问题不存在。在 index.php 文件中,它在调用所有这些的顶部看起来像这样:
include("./classes/config.class.php");
include("./classes/databas.class.php");
$db = Databas::getInstance();
session_start();
这是我的数据库:
class Databas
{
var $conn;
var $sql;
private static $instance;
public static function getInstance()
{
if (!isset(static::$instance)) {
static::$instance = new static;
}
return static::$instance;
}
function __construct()
{
//connect database
$config = Config::getInstance();
//$conn = new mysqli('$config->dbServer', '$config->dbUser', '$config->dbPwd', '$config->dbName' );
$conn = pg_connect("host=".$config->dbServer." dbname=".$config->dbName." user=".$config->dbUser." password=".$config->dbPwd );
if (!$conn) {
die("Connection failed: ");
} else {
$this->conn = $conn;
}
}
这是我的配置文件:
class Config {
public $dbServer = "localhost";
public $dbUser = "postgres";
public $dbPwd = "pass";
public $dbName = "databasename";
private static $instance;
public static function getInstance()
{
if (!isset(static::$instance)) {
static::$instance = new static;
}
return static::$instance;
}
【问题讨论】:
标签: php sql postgresql