我正在尝试准备以下代码:
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语句或仅处理用户输入的语句?
答案 0 :(得分:0)
根据PHP docs,您可能不会在用于命名SELECT语句返回的列的选择列表中使用?
绑定变量“作为标识符(例如表名或列名) ,或指定二元运算符的两个操作数,例如=等号。“