php 致命错误:调用成员函数bindParam()[重复]

du7egjpx  于 2022-12-10  发布在  PHP
关注(0)|答案(2)|浏览(166)

此问题在此处已有答案

Why does this PDO statement silently fail?(1个答案)
3小时前关门。
我正在学习使用PHP,有一个简单的问题。

<?php
   ini_set('display_errors', 'On');
  error_reporting(E_ALL);
  $db = new PDO('sqlite:/usr/users2/mieic2009/ei09072/public_html/TP1/Delicious    /Database.db');
   $a = $_GET['linkRef'];
   $b = $_GET['tagToAdd'];

   $checkIdLink = $db->prepare('SELECT idLink FROM Links WHERE nome_L = :link_n;');
   $checkIdLink->bindParam(':link_n', $a, PDO::PARAM_STR);
   $checkIdLink->execute();
   $linkID = $checkIdLink->fetch();

   $insertLink = $db->prepare('INSERT INTO Tags (nome_T, idLink) VALUES (:addTag, :link_id)');
   $insertLink->bindParam(':addTag', $b, PDO::PARAM_STR);
   $insertLink->bindParam(':link_id', $linkID, PDO::PARAM_INT);
   $insertLink->execute();

    echo 'Tag added to the specified link!';
?>

这段代码应该向数据库中的现有链接添加一个标记,但是我得到了这个错误
致命错误:在第9行对/usr/users 2/mieic 2009/ei 09072/public_html/TP 1/Delicious/addTag. php中的非对象调用成员函数bindParam()
我已经检查了一遍又一遍,似乎找不到这个代码有什么问题,我在谷歌上搜索了这个错误,但不幸的是,我找到的答案不够有帮助。任何帮助都将不胜感激,这可能是一个简单的新手错误。

wpx232ag

wpx232ag1#

我会检查$db->prepare()函数是否成功执行。如果没有,它将返回false。因此,您可能试图对等于false的变量调用bindParam()
http://www.php.net/manual/en/pdo.prepare.php
此外,您还应该将PDO对象声明放在try/catch中,以确保它也是成功的,如this page上的第一个示例所示:

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
jm81lzqq

jm81lzqq2#

尝试print_r($db->errorInfo());
可能是准备失败,所以您无法使用它。

相关问题