Я учу работать с 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 в строке 9
Я проверил снова и снова и не могу найти, что не так с этим кодом, я искал эту ошибку, но, к сожалению, ответ, который я нашел, не был достаточно полезным. Любая помощь была бы оценена, это, вероятно, простая ошибка новобранец.
Я бы проверял, что $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(); }
Попробуйте print_r($db->errorInfo());
Вероятно, подготовка не удалась, поэтому вы не можете ее использовать.