Я пытаюсь вставить в базу данных с использованием PDO, но после завершения скрипта и тестирования его, и я не вижу каких-либо входных данных от вставки в базу данных, я попытался вернуть ошибки из PDO, но ничего. Я не уверен, что происходитSQLite Подготовленные утверждения не вставляются
Я обновил имена параметров, и они ничего не меняют с результатом кода. Кажется, что функция q() имеет только проблемы.
Баз данные инициализируются и выглядит следующим образом:
function __construct() {
if (! file_exists(dbpath . DB)) {
$this->db = true;
$this->open(dbpath . DB, SQLITE3_OPEN_CREATE|SQLITE3_OPEN_READWRITE) or $this->db = false;
if ($this->db == false) {
return false;
}
$table = "CREATE TABLE link_hits(id INTEGER PRIMARY KEY AUTOINCREMENT, link TEXT NOT NULL, hits INT NOT NULL, date_added datetime default current_timestamp)";
$this->exec($table);
} else {
$this->db = true;
$this->open(dbpath . DB, SQLITE3_OPEN_CREATE|SQLITE3_OPEN_READWRITE) or $this->db = false;
if ($this->db == false) {
return false;
}
}
}
Подготовленной функция оператора
function q ($q, $v) {
if ($this->db) {
$this->securedb = $this->prepare($q);
foreach ($v as $k=>$vv) {
if (is_numeric($vv)) {
$this->securedb->bindValue($k, $vv, SQLITE3_INTEGER);
} else {
$this->securedb->bindValue($k, $vv, SQLITE3_TEXT);
}
}
$this->errorInfo = $this->errorInfo();
return (($this->handle = $this->execute()) == true) ? $this->handle : false;
}
return false;
}
Добавить функцию ссылки
function addlink ($link) {
if ($this->linkexists($link)) {
return false;
}
$this->que = "INSERT INTO link_hits (link, hits) VALUES (:link, :hits)";
$this->input = array(
':link' => $link,
':hits' => 0
);
return ($this->q($this->que, $this->input)) ? true : false;
}
ли я не образовал мое заявление правильно? Я последовал за несколькими учебниками. Я действительно привык к MySQL, но у меня не будет доступа к нему, где это будет. :(
Даже моя функция linkexists бросает ложную И да, связь есть, я вынужден его с обычным запросом
function linkexists($link) {
$this->que = "SELECT link FROM link_hits WHERE type='table' AND link=':link'";
$this->input = array(
':link' => $link
);
return (($this->handle = $this->q($this->que, $this->input)) == true) ? true : false;
}
Почему вы добавляете ';' рядом с вашими переменными привязки? –
Это несколько примеров. Это всего лишь шаблон, который может быть использован IE * {|} * key;:; ... по крайней мере, насколько это возможно Я могу сказать. – WASasquatch
В 'linkexists' утверждение должно иметь много котировок, PDO будет вставлять эти au тически. Попробуйте следующее: 'SELECT link FROM link_hits WHERE type =: type AND link =: link' - но для вашей основной проблемы у меня нет подсказки. :) – fboes