【问题标题】:Prepared MySQLi statements in PHP在 PHP 中准备 MySQLi 语句
【发布时间】:2015-03-01 15:12:27
【问题描述】:

对不起,如果我对此感到陌生。

        if(!isset($stmt_counttime)) { $stmt_counttime = $mysqli->prepare("SELECT count(1) as count FROM `stop_times` where `stop_id` = ? and `trip_id` = ? LIMIT 1");
    $stmt_counttime->bind_param('ss',$stop_id,$trip_id); }
    $stop_id = $data[3];
    $trip_id = $data[0];
    $stmt_counttime->execute();
    $stmt_counttime->bind_result($count_time_result);
    $stmt_counttime->fetch();

    if(!isset($stmt_counttrip)) { $stmt_counttrip = $mysqli->prepare("SELECT count(1) as count FROM `trips` where `trip_id` = ?");
    $stmt_counttrip->bind_param('s',$tripid);
     }

    $tripid = $data[0];
    $stmt_counttrip->execute();
    $stmt_counttrip->bind_result($count_trip_result);
    $stmt_counttrip->fetch();

第 67 行:$stmt_counttrip->bind_param('s',$tripid);

错误:致命错误:在第 67 行的 /home/fallouta/public_html/ocbus/google_transit/stop_times.php 中的非对象上调用成员函数 bind_param()

如果有人可以告诉我,我做错了什么?请告诉我。

注意:我需要trip_id 的值作为字符串而不是整数。

谢谢, 赛勒斯

【问题讨论】:

    标签: php mysql sql mysqli prepared-statement


    【解决方案1】:

    我意识到我的错误。应包括以下声明:

    $stmt->store_result();

    因为您不能同时进行两个查询。随时添加更多信息。

    【讨论】:

      【解决方案2】:

      先设置参数,再绑定:

      $stop_id = $data[3];
      $trip_id = $data[0];
      $stmt_counttime->bind_param('ss',$stop_id,$trip_id);
      

      $tripid = $data[0];
      $stmt_counttrip->bind_param('s',$tripid);
      

      至少这是 php.net 推荐的

      【讨论】:

        猜你喜欢
        • 2012-05-24
        • 1970-01-01
        • 1970-01-01
        • 2014-09-17
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多