致命错误:在php中的非对象上调用成员函数execute()


Fatal error: Call to a member function execute() on a non-object in php

我不知道我的代码是怎么回事。。。你使用mysqli,当我执行时,他显示了这个错误,请有人帮我?

$mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
$results = $mysqli->prepare("SELECT * FROM `imovel` WHERE `finalidade` LIKE $finalidade AND `nquartos` = $nquarto AND `tipoimovel` LIKE $tipoimovel AND `preco` BETWEEN $pmin AND $pmax AND `conselho` LIKE $conselho AND `frequesia` LIKE $frequesia AND `referencia` = $refimovel AND `garagem` = $garagem AND `jardim` = $jardim AND `piscina` = $piscina AND `condominio` = $condominiof AND `elevador` = $elevador AND `vistapreveligiada` = $vistapriv ORDER BY `imovel`.`preco` DESC LIMIT $page_position, $item_per_page");
$results->execute(); //Execute prepared Query
$results->bind_result($id ,$imagem, $frequesia ,$conselho, $preco); //bind variables to prepared statement

这应该更接近于您准备好的语句。根据您当前的执行情况,SQL是无效的。

$mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);
if ($mysqli->connect_error) {
      die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
$results = $mysqli->prepare("SELECT * FROM `imovel` WHERE `finalidade` LIKE ? AND `nquartos` = ? AND `tipoimovel` LIKE ? AND `preco` BETWEEN ? AND ? AND `conselho` LIKE ? AND `frequesia` LIKE ? AND `referencia` = ? AND `garagem` = ? AND `jardim` = ? AND `piscina` = ? AND `condominio` = ? AND `elevador` = ? AND `vistapreveligiada` = ? ORDER BY `imovel`.`preco` DESC LIMIT ?, ?");
$results->bind_param("sssiisssssssssii", $finalidade, $nquarto, $tipoimovel, $pmin, $pmax, $conselho, $frequesia, $refimovel, $garagem, $jardim, $piscina, $condominiof, $elevador, $vistapriv, $page_position, $item_per_page);
$results->execute(); //Execute prepared Query
$results->bind_result($id ,$imagem, $frequesia ,$conselho, $preco); //bind variables to prepared statement

SQL中的字符串需要加引号,或者用占位符替换(这就是?)。使用占位符,驱动程序将替换值并处理引用。

这个查询也有很多要求,我希望你在使用这里之前在数据库上运行这个查询,因为它可能不会返回任何结果。。。