Php 对非对象错误调用成员函数bind_param(),但SQL可以工作

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

我有一个在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_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时,他没有退出脚本,因此试图调用
上的
绑定参数将失败这也是一个问题。但事实上,这不是问题所在。