2014-02-22 7 views
7

Verwenden von SQLite und PDO. Ich bin ziemlich neu bei PDO, also könnte ich hier Hilfe gebrauchen. Ich erhalte den Fehler:Allgemeiner Fehler: 25 Bind- oder Spaltenindex außerhalb des Bereichs

SQLSTATE[HY000]: General error: 25 bind or column index out of range 

Hier ist mein Code:

// db.php 
    function dbh($sql, $db = "", $nsx = "") { 
    $db = ($db) ? $db : "mydb"; 
    $db = $db.".sqlite"; 
    try { 
     $dbh = new PDO("sqlite:$db"); 
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     // id, title, desc, cost, album, version, added 
     $dbh->exec("CREATE TABLE IF NOT EXISTS `products` (
        `id` INTEGER PRIMARY KEY, 
        `title` TEXT, 
        `desc` TEXT, 
        `cost` TEXT, 
        `album` TEXT, 
        `version`TEXT, 
        `added` DATETIME 
       )"); 
     //$mem = new PDO('sqlite::memory'); 
     //$mem->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     $res = $dbh->prepare($sql); 
     //var_dump($nsx); 
     $res->execute($nsx); 

     if (!is_array($nsx)) { 
     return $res->fetchAll(); 
     } 
    } 
    catch(PDOException $e) { 
     return $e->getMessage(); 
    } 
    } 

// products.php 
$sql = "INSERT INTO `products` (title, desc, cost, album, version, added) VALUES (:title,:desc,:album,:version,:cost,:date)"; 
$nsx = array(
     ':title' => $i['addon']['title'][$k], 
     ':desc' => $i['addon']['desc'][$k], 
     ':cost' => $i['addon']['cost'][$k], 
     ':album' => $album, 
     ':version' => '1.0', 
     ':added' => $date, 
     ); 
$dbh = dbh($sql,"",$nsx); 

Antwort

12

Sie binden :added, sie aber nicht in der Liste Werte angeben: (:title,:desc,:album,:version,:cost,:date). Stattdessen haben Sie :date angegeben, die nicht an Ihr Array gebunden ist.

Verwandte Themen