2013-02-21 7 views
1

Le code suivant n'enregistre pas un "eventid" dans la base de données sqlite par défaut. Je peux voir toutes les lignes avec l'écho mais l'ID de l'événement est utile ... Des idées pourquoi? Merci beaucoup.SQLite n'enregistre pas une clé primaire

$now = time(); 
try{ 
if (!file_exists("testgb")){ 
    $db = new PDO('sqlite:testgb'); 
    $db->exec("CREATE TABLE guestbook (eventid INTEGER PRIVATE KEY,name VARCHAR(55), message TEXT, date DATETIME)"); 
} 
$db = new PDO('sqlite:testgb'); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$db->exec("INSERT INTO guestbook (name, message, date) VALUES ('KIRILL', 'Hello!!', datetime($now, 'unixepoch'))"); 
$res = $db->query("SELECT * FROM guestbook"); 
foreach ($res as $row){ 
    echo $row['eventid']."<br>"; 
    echo $row['name']."<br>"; 
    echo $row['message']."<br>"; 
    echo $row['date']."<br>"; 
    echo "<hr>"; 
} 
}catch (PDOException $e){ 
    echo $e->getMessage(); 
} 

Répondre

4

Souhaitez-vous ajouter l'identifiant de l'événement AUTOINCREMENT? et clé primaire?

$db->exec("CREATE TABLE guestbook (eventid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(55), message TEXT, date DATETIME)"); 
+0

C'était une erreur vraiment idiote de la mienne. Snx. C'est le travail $ db-> exec ("livre d'or de CREATE TABLE (eventid INTEGER PRIMARY KEY, nom VARCHAR (55), message TEXT, date DATETIME)"); Autoincrement n'est pas nécessaire dans sqlite. Merci. – user2062756

0

L'ID d'événement n'est pas créé en tant que champ AutoInc. Je ne suis pas sûr de la syntaxe, mais si vous recherchez CREATE TABLE pour sqlite, vous trouverez comment le définir en tant que champ Auto Increment.

Questions connexes