php - fatal error 说明 "Call to a member function bind_param() on a non-object"

标签 php mysql sql

我遇到了一个 fatal error ,我不知道哪里出了问题。

我的分类页面,

<?php 
require_once 'dbfunction.php'; 
require_once 'DBCategory.php';

$con=getDbConnect();
$categoryArr=getcategoryArrCon($con, STATUS_ACTIVE); 

foreach ($categoryArr as $categoryName=>$CategoryInfoArr) { 

?>

这是我的 getCategoryArrCon 函数脚本

<?php

define("STATUS_ACTIVE", 0);
define("STATUS_DELETE", 1);

function getcategoryArrCon($con, $status) {
    $result = array();
    if (!$con->connect_error) {
        $sqlstr = "SELECT c.category, c.title, c.image" .
                "FROM category c WHERE status=?";
        $stmt = $con->prepare($sqlstr);
        $stmt->bind_param("i", $status);
        $stmt->excute();
        $stmt->bind_result($category, $title, $image);
        while ($stmt->fetch()) {
            $result[$category] = [
                        "category" => $category,
                        "title" => $title,
                        "image" => $image
            ];
        }
        $stmt ->close();
    }
    return $result;
}
?>

最佳答案

如果您注意到,当您回显准备好的语句时,它看起来就像这样:

SELECT c.category, c.title, c.imageFROM category c WHERE status=?

c.imageFROM 中间的那个简单空格也很重要,可以使查询有效。

$sqlstr = "SELECT c.category, c.title, c.image" .
                " FROM category c WHERE status=?";
             //  ^

或者为什么不把它做成一个衬垫:

$sqlstr = "SELECT c.category, c.title, c.image FROM category c WHERE status = ?";

还要确保 $stmt->excute(); 不是真正的拼写错误。它的->execute()

旁注:另外,利用->error检查准备是否正确。示例:

$stmt = $con->prepare($sqlstr) or die($con->error);

关于php - fatal error 说明 "Call to a member function bind_param() on a non-object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28643965/

相关文章:

php - 为什么我的 mysql 表的后续结果没有在 ListView 中创建新对象?

mysql - 两个不同协会的 Rails 订单

php - 获取键为 id 而不是数组键为 0,1 的数组结果

sql - 该函数缺少窗口规范

php - Codeigniter 中的日志文件夹变得越来越重

php - 使用 fgetcsv 函数后,从 ftp 服务器读取下载的文件不显示数据

php - Mysql 加入,需要帮助格式化查询

php - 检查字符串是否为 ip 子网

mysql:在两列中搜索一个值并返回找到的列名

MySQL 对两个表字段求和并更新