首页 文章

MySQLi调用非对象的成员函数bind_param()错误[duplicate]

提问于
浏览
1

这个问题在这里已有答案:

这很奇怪 . 我只在prepare()和bind_result()中添加一个变量,它会导致错误 . 这是有效的代码:

$id = $_GET['id'];
$result = $mysqli->prepare("SELECT YiD, Title FROM Videos WHERE iD = ?");
$result->bind_param("s",$id);
$result->bind_result($youtubeid, $youtubetitle);
$result->execute();
$result->store_result();
$result->fetch();

现在这里的代码不起作用:

$id = $_GET['id'];
$result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?");
$result->bind_param("s",$id);
$result->bind_result($youtubeid, $youtubetitle, $youtubedesc);
$result->execute();
$result->store_result();
$result->fetch();

并且它给了我这个错误 - 致命错误:在第23行的/home/content/77/9901377/html/video.php中的非对象上调用成员函数bind_param()

第23行是bind_param(“s”,$ id)

我已经正确地调用了数据库,并且所有内容都在第一个代码中运行,但是当我向代码中添加更多变量时,它无效 .

2 回答

  • 1

    Desc是MySQL reserved word . 如果要将其用作列名或表名,则必须将其括在反引号中(`)

  • 3

    问题是 $result 不是一个对象 .

    这是一个错误代码或 False ,因为你在这里使用了 Desc (这是一个保留关键字):

    $result = $mysqli->prepare("SELECT YiD, Title, Desc FROM Videos WHERE iD = ?");
    

    以便 $mysqli->prepare 返回错误而不是适合参数绑定的SQLi对象 .

    尝试引用列名称 .

相关问题