簡體   English   中英

無法使用PDOStatement類型的對象

[英]Cannot use object of type PDOStatement

當我嘗試將id放在按鈕上時出現此錯誤

Fatal error: Cannot use object of type PDOStatement as array...

錯誤在哪里的代碼是這里

   $pdo = Database::connect();
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

   $q = "SELECT * FROM books where user = '".$_SESSION['level']."'";

   if($res = $pdo->query($q))
   {
         if($res->fetchColumn() > 0) 
         {
                foreach($pdo->query($q) as $res)
                {
                        echo '<a href="users/books.php?user_id='. $res['user_id'] .'"> '.$res['name'].' </a>';         
                }
         }
         else
         {
                echo '<a href="users/bookAdd.php?user_id='. $res['user_id'] .'">Create Book</a>';
         }
    }   
    Database::disconnect();

我要嘗試的是當用戶登錄時如果沒有書可顯示給他,則按鈕Create book 錯誤在else塊中存在,那里是users/bookAdd.php?user_id='. $res['user_id'] .' users/bookAdd.php?user_id='. $res['user_id'] .' 任何想法如何解決這個問題?

該錯誤已經很明顯,您無法嘗試在PDOStatement對象的上下文中訪問索引。

您不能只使用->query() ,然后嘗試從創建的對象訪問值。 您尚未獲取結果。

您需要正確獲取結果:

$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// prep the statement
$q = $pdo->prepare("SELECT * FROM books WHERE user = :level");
$q->bindParam(':level', $_SESSION['level']); // bind it
$q->execute();
// fetch the results
$results = $q->fetchAll(PDO::FETCH_ASSOC);
if(count($results) > 0) {
    foreach($results as $res) {
        echo '<a href="users/books.php?user_id='. $res['user_id'] .'"> '.$res['name'].' </a>';
    }
} else {
    echo '<a href="users/bookAdd.php">Create Book</a>';
}

Database::disconnect();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM