Schema is:
sqlite> .schema posts
CREATE TABLE posts (
id integer primary_key auto_increment,
title text,
content text
);
...
sqlite> .mode line
sqlite> select id,title, content from posts;
id =
title = title
content = content in here
id =
title = a new title
content = new content
.... Весь мой index.php.Предполагается, что это тривиальный пример.
// Insert a post into the DB
if (isset($_POST['title']) && isset($_POST['content'])) {
try {
// Fill in the values
$title = $_POST['title'];
$content = $_POST['content'];
# echo "title=".$title.", content=".$content;
// Create a prepared statement
$stmt = $db->prepare("INSERT INTO posts (title, content) VALUES (:title, :content);");
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
$stmt->execute();
} catch (Exception $e) {
die ($e);
}
}
// Get posts from database
try {
$posts = $db->prepare('SELECT id, title, content FROM posts;');
$posts->execute();
} catch (Exception $e) {
die ($e);
}
?>
<h1>Posts - SQLite Example</h1>
<?php while ($post = $posts->fetchObject() ): ?>
<br/>
<h2><?php echo $post->title ?></h2>
<?php echo $post->content ?>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=delete&id=<?php echo $post->id ?>"><br/>Delete Post</a>
<?php endwhile; ?>
<hr />
<h2>Add new Post</h2>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>
<label for="title">Title:</label>
<input type="text" name="title" />
</p>
<p>
<textarea name="content" rows="8" cols="50"></textarea>
Моя проблема в том, что $ post-> id пусто, но должно было отображаться в переменную $ post в соответствии с документацией для fetchObject ().
Я просто пытаюсь получить первичный ключ отображаемой строки, чтобы добавить ссылку для удаления.
Обратите внимание, что я могу открывать, читать и писать базу данных безвопрос.Кроме того, заголовок и содержимое извлекаются правильно, но я просто застрял при получении поля id из объекта, возвращаемого fetchObject ().
Кажется, что sqlite может никогда ничего не помещать в поле id таблицы.
ОБНОВЛЕНИЕ: Ответ, возможно, был здесь все время.На самом деле это была проблема sqlite, а не php.