致命错误:调用成员函数bindParam()

use*_*110 1 php

我正在学习使用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!';
?>
Run Code Online (Sandbox Code Playgroud)

此代码应将标记添加到数据库中的现有链接,但是我收到此错误

致命错误:在第9行的/usr/users2/mieic2009/ei09072/public_html/TP1/Delicious/addTag.php中调用非对象上的成员函数bindParam()

我一遍又一遍地检查,似乎无法找到这个代码有什么问题,我搜索了这个错误但不幸的是我找到的答案都没有用.任何帮助将不胜感激,这可能是一个简单的菜鸟错误.

Nic*_*ndo 5

我会检查$db->prepare()函数是否成功执行.如果没有,它将返回false.所以你可能试图调用bindParam()一个等于的变量false

http://www.php.net/manual/en/pdo.prepare.php

此外,您应该将PDO对象声明放入其中try/catch以确保它也是成功的,就像在此页面的第一个示例中一样:

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