我有一个在phpmyadmin中成功运行的SQL查询,但在PHP中它会调用Call to a member function bind_param() on a non-object
错误消息。你能提出任何可能出错的想法吗?
$con = mysqli_connect($mysql_server,$mysql_user,$mysql_pass,$mysql_database);
if (!$con)
{
$error_auth="Failed to connect to MySQL: " . mysqli_connect_error();
return false;
};
$stmt = $con->prepare("SELECT `start`, `timetable`.`id`, `guide_id`, `name` FROM `timetable` INNER JOIN `excursions` ON `timetable`.`excursion_id` = `excursions`.`id` WHERE `name` LIKE ? LIMIT 150");
if (!$stmt)
{
echo "Errormessage: %s\n";
echo $mysqli->error;
}
//, $from_date, $to_date
$stmt->bind_param("s", "%".$str_search."%");
错误:
Errormessage: %s
<!--error--><br />
<b>Fatal error</b>: Call to a member function bind_param() on a non-object in <b>\json\classes\tigran_search_transaction_script.php</b> on line <b>27</b><br />
答案 0 :(得分:2)
错误是你的'bind_param'语句:
'bind_param'期望一个变量,它可以采用'引用'。您传递了“计算的”值。可悲的是,只有PHP知道它存储在哪里,它不会告诉任何人它在哪里。
您需要做的是:
$my_str_search = "%".$str_search."%";
$stmt->bind_param("s", $my_str_search);
所有这一切都会很好,因为PHP现在可以告诉数据库确切的位置,以正确的格式获取所需的所有信息。