在非对象错误上调用成员函数bind_param(),但SQL有效

时间:2014-04-07 15:14:28

标签: php mysql

我有一个在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 />

1 个答案:

答案 0 :(得分:2)

错误是你的'bind_param'语句:

'bind_param'期望一个变量,它可以采用'引用'。您传递了“计算的”。可悲的是,只有PHP知道它存储在哪里,它不会告诉任何人它在哪里。

您需要做的是:

$my_str_search = "%".$str_search."%";

$stmt->bind_param("s",  $my_str_search);

所有这一切都会很好,因为PHP现在可以告诉数据库确切的位置,以正确的格式获取所需的所有信息。