Php 对非对象错误调用成员函数bind_param(),但SQL可以工作
我有一个在phpmyadmin中成功运行的SQL查询,但在PHP中,它在非对象错误消息上调用成员函数bind_param()。你能告诉我什么是错误的吗Php 对非对象错误调用成员函数bind_param(),但SQL可以工作,php,mysql,Php,Mysql,我有一个在phpmyadmin中成功运行的SQL查询,但在PHP中,它在非对象错误消息上调用成员函数bind_param()。你能告诉我什么是错误的吗 $con = mysqli_connect($mysql_server,$mysql_user,$mysql_pass,$mysql_database); if (!$con) { $error_auth="Failed to connect to MySQL: " . mysqli_connect_e
$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 />
错误消息:%s
致命错误:在第27行的\json\classes\tigran\u search\u transaction\u script.php中对非对象调用成员函数bind\u param()
错误是您的“bind_param”语句:
“bind_param”需要一个变量,它可以引用该变量。传递一个“计算的”值。遗憾的是,只有PHP知道它存储在哪里,它不会告诉任何人它的位置
您需要做的是:
$my_str_search = "%".$str_search."%";
$stmt->bind_param("s", $my_str_search);
一切都会好起来的,因为PHP现在可以告诉数据库确切的查找位置,以正确的格式获取它所需要的所有信息。Change
echo$mysqli->error代码>到echo$con->错误代码>。你没有$mysqli
变量,你有$con
。我有<代码>未选择任何数据库
。现在我知道问题了!好了,给你-但是,很遗憾,在连接时没有选择它。@jeroen:您链接的方法是通过$mysqli->stmt init()
创建新的mysqli\u stmt
时。我认为真正的问题是当如果(!$stmt)
为真且OP prints error时,他没有退出脚本,因此试图调用上的绑定参数将失败这也是一个问题。但事实上,这不是问题所在。