![](/img/trans.png)
[英]Error in PDO page Call to a member function bindValue() on a non-object
[英]Fatal error: Call to a member function bindValue() on a non-object in
我收到上面顯示的錯誤。 我已經看過這個網站,但是找不到解決我問題的正確方法。
我試圖寫一個User- class 。 到目前為止,以下代碼是我的代碼。
class User
{
private $_id;
public function __construct($id)
{
$this->_id = $id;
}
public function getUsername()
{
global $db;
$query = $db->prepare("SELECT * FROM users WHERE id = ?");
$query->bindValue(1, $this->_id);
$query->execute();
}
}
結果是出現以下錯誤,我不知道該如何解決...
致命錯誤:在非對象中調用成員函數bindValue()
編輯:
這是我的使用方式:
$user = new User($_SESSION['logged_in']);
$username = $user->getUsername();
旁注: session_start();
已加載。
使用全局變量確實是一種糟糕的方法。
閱讀此博客文章:
它解釋了為什么它不是一個好主意。
如果$db
為null,則很可能prepare將不會返回語句對象。
然后$query
將不是一個statemnt,因此bindValue
不會被識別。
而是將連接傳遞給您的班級,然后停止使用全局變量。
而且您的函數沒有返回任何數據,我對其進行了修改以返回用戶名。
class User
{
private $_id;
private $db;
public function __construct($id, $conn)
{
$this->_id = $id;
$this->$db = $conn;
}
public function getUsername()
{
$query = $this->db->prepare("SELECT username FROM users WHERE id = ?");
$query->bindValue(1, $this->_id);
$query->execute();
$data = $query->fetch();
return $data['username'];
}
}
用法:
session_start();
$id = $_SESSION['logged_in'];
$conn = new PDO('xxx');
$user = new User($id, $conn);
$username = $user->getUsername();
在我看來,您的查詢對象是$db
而不是$query
...如果是這樣,則$ query缺少bindValue()
是正常的,因為它不是對象,因此它沒有任何方法。
嘗試使用$db->bindValue()
,讓我們知道它如何進行:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.