2011-01-23 48 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

相关问题