在非对象上调用成员函数bind_param() - 在准备之前返回

时间:2015-01-21 18:36:56

标签: php mysql prepared-statement

我正在尝试准备以下代码:

foreach((array)$problem as $word) { //cycles through each word in the problem, grabs tag name like word, looking through each separate tag table
    foreach((array)$tables as $table) { //cycles through list of keyword tables, checks keywords against tables
        $query = $mysqli->prepare("SELECT ?.name FROM ? WHERE ?.words LIKE '?'"); //grabs table name where keyword exists
        $query->bind_param('ssss',$table,$table,$table,$word);     
        $query1 = $query->execute();
        $resultThree::fetch_assoc($query1);
            if(!is_null($resultThree)) { //if keyword exists
                array_push($pretag, $resultThree['name']); //push to pretags
            }
    }
}

它返回说"在第25行" /home/whatpzcp/public_html/test/search.php中的非对象上调用成员函数bind_param(); (准备好的声明行)。显然这意味着MySQL没有返回任何内容,但是这个相同的代码在我使用准备好的语句之前工作得很好,而且不再这样了,这让我感到困惑。

对我来说很容易,因为这是我的第一个程序!另外,我是否需要准备所有MySQL语句或仅处理用户输入的语句?

1 个答案:

答案 0 :(得分:0)

根据PHP docs,您可能不会在用于命名SELECT语句返回的列的选择列表中使用?绑定变量“作为标识符(例如表名或列名) ,或指定二元运算符的两个操作数,例如=等号。“