我正在学习使用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!';
?>
此代码应将标记添加到数据库中的现有链接,但是我收到此错误
致命错误:在非对象中调用成员函数bindParam() /usr/users2/mieic2009/ei09072/public_html/TP1/Delicious/addTag.php on 第9行
我一遍又一遍地检查,似乎无法找到这个代码有什么问题,我用Google搜索了这个错误,但遗憾的是我找到的答案都没有用。任何帮助将不胜感激,这可能是一个简单的菜鸟错误。
答案 0 :(得分:5)
我会检查$db->prepare()
函数是否成功执行。如果没有,它将返回false。因此,您可能会尝试在等于bindParam()
false
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();
}
答案 1 :(得分:4)
尝试print_r($db->errorInfo());
准备工作可能失败了,所以你不能使用它。