你需要看看mysqli :: fetch_object的文檔。
你的類名需要被指定爲像這樣的字符串:
$result_item->fetch_object('SalesOrderItem'); // or 'item' your question is inconsistent here
您可能還需要一些值傳遞給構造沿幫助你。我強烈建議閱讀文檔頁面上的用戶註釋 - http://us3.php.net/manual/en/mysqli-result.fetch-object.php,以獲得比主要文檔本身更好的使用示例。
您在評論中提到的致命錯誤是因爲您無法更改$this
。這是對當前對象實例的內部引用。試圖改變它是沒有意義的。
如果你的意圖是你有一個對象類,本質上是它自己的對象關係映射器(ORM)。到它調用數據庫的地方,從記錄中填充屬性並以某種方式將它自己變成另一個類,這是不可能的。你可能需要做的是利用排序工廠模式來創建一個類,它除了使用ORM方法實例化給定類的類之外,什麼也不做。
所以也許用法是這樣的:
// The class with MySQLi logic could be called something like MysqlObjectfactory
// It could take input like an instantiated mysqli object, DB table name,
// the class name you are trying to map to, and the id for the specific item in the class you are looking for
// it would use the logic noted above to generate an object with the specifications given
// and return it to the caller
$object = MysqliObjectFactory::getObject($mysqli, $db_table, $class_name, $id);
是跳到我腦海中的其他想法是:爲什麼另起爐竈?這聽起來像你正在尋找的是一個對象關係映射器。 PHP中有幾種被廣泛使用:Doctrine,Propel,PHP Active Record等。你可能會檢查這些,因爲它們會給你提供更多的功能性/靈活性,而不是試圖用mysqli::fetch_object()
來做到這一點,在數據庫字段(或在SQL中提供的別名)與類屬性名稱完全匹配(不需要在類構造函數中進行映射)。
'SalesOrderItem'不是'item'。另外:您錯過了報價 – TimWolla
致命錯誤:無法在第39行的Z:\ home \ krumaninside \ www \ ordering \ includes \ classes \ sales_order_item.class.php中重新分配$ this。 – AnKing
@AnKing爲什麼要嘗試分配一個值到'$ this'?這沒有意義。 –