2011-01-23 80 views
-2
$EODQuery = "SELECT * FROM EOD WHERE Symbol LIKE '$start' LIMIT 1 OFFSET $limit"; 

$EODRes = $mysqli->query($EODQuery); 

我得到一個錯誤,但沒有當我直接查詢數據庫。原因:試圖在php中獲取非對象的屬性

<?php $i = 0; while($i <= 4) { $EODRow = getEOD("A%",$i); $i++; echo $EODRow; } ?> 
+2

你明白其中有什麼錯誤行和哪些代碼工作? `$ mysqli`從哪裏來? – 2011-01-23 15:18:25

+1

此外,顯示確切的錯誤,並生成它的代碼(您發佈的代碼不會產生該錯誤,需要更多)... – ircmaxell 2011-01-23 15:20:29

+0

要麼你沒有實例化一個mysqli對象,在這種情況下$ mysqli是空的並且沒有` - > query()`方法,或者查詢本身失敗,並且$ EODRes實際上是一個mysqli錯誤對象,而不是查詢結果,沒有` - > fetch()`方法。 – 2011-01-23 15:22:45

回答

1

在好像你已經忘記了實例$ mysqli的第一次看,導致$ mysqli的不是一個對象,所以你不能執行查詢()方法。

2

您的錯誤消息與查詢本身無關。發生了什麼事情是這樣的:您在$mysqli對象上調用方法query() - 但是,PHP認爲它實際上不是一個對象。

這樣做的原因可能是:

  • 您忘記了創建該對象(見http://www.php.net/manual/en/mysqli.connect.php)。這裏有一個例子:

    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 
    
  • 您輸入了錯誤的變量名,所以你的mysqli的對象實際上是所謂的別的東西。

  • 您顯示的代碼位於函數或方法中,但您的$mysqli對象位於全局範圍內。在這種情況下,你應該「負擔」入功能範圍,就像這樣:

    function doStuff() { 
        global $mysqli; 
    
        $mysqli->query(...); 
    } 
    

    欲瞭解更多信息有關變量的作用域,看到這個鏈接:http://php.net/manual/en/language.variables.scope.php

相關問題