2014-03-25 6 views
0

Я пытаюсь вставить в базу данных с использованием 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; 

    } 
+0

Почему вы добавляете ';' рядом с вашими переменными привязки? –

+0

Это несколько примеров. Это всего лишь шаблон, который может быть использован IE * {|} * key;:; ... по крайней мере, насколько это возможно Я могу сказать. – WASasquatch

+0

В 'linkexists' утверждение должно иметь много котировок, PDO будет вставлять эти au тически. Попробуйте следующее: 'SELECT link FROM link_hits WHERE type =: type AND link =: link' - но для вашей основной проблемы у меня нет подсказки. :) – fboes

ответ

0

Parameter names не должен заканчиваться точкой с запятой:..

$this->que = "INSERT ... VALUES (:link, :hits)"; 
+0

Я изменил параметры, но все тот же сценарий. Даже мой linkexiss вызывает ложь. – WASasquatch

Смежные вопросы