2013-02-21 62 views
1

以下代码默认情况下不在sqlite数据库中保存“eventid”。我可以看到所有与回声的行,但事件ID是emply ......任何想法为什么?非常感谢。SQLite不保存主键

$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(); 
} 

回答

4

是否要添加AUTOINCREMENT事件ID?和PRIMARY KEY?

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

这是我的一个非常愚蠢的错误。 SNX。这是工作$ db-> exec(“CREATE TABLE guestbook(eventid INTEGER PRIMARY KEY,name VARCHAR(55),message TEXT,date DATETIME)”);在sqlite中不需要自动增量。感谢名单。 – user2062756 2013-02-21 14:52:39

0

EventID未创建为AutoInc字段。我不确定语法是什么,但是如果你查找sql​​ite的CREATE TABLE,你会发现如何将它设置为Auto Increment字段。