如何解决我正在尝试使用 SQLite 和 PHP 作为用户更新帖子,首先获取帖子 ID,然后更新帖子,但它不起作用
在 index.php 中 我有一个帖子列表,想获取帖子的 ID,同时点击下面的链接
<div class="editPost">
<a href="updatePost.php?id=<?php echo $post['id']; ?>">Edit</a> </div>
在 updatePost.php 中
想定义post的ID,同时更新form中的post,不知道有没有可能,或者有没有其他方法
if (isset($_SESSION['user'])) {
$userId = $_SESSION['user']['id'];
if (isset($_GET['id'])) {
$id = filter_var($_GET['id'],FILTER_SANITIZE_NUMBER_INT);
if (isset($_POST['title'],$_POST['link'],$_POST['description'])) {
$title = filter_var($_POST['title'],FILTER_SANITIZE_STRING);
$link = filter_var($_POST['link'],FILTER_SANITIZE_URL);
$description = filter_var($_POST['description'],FILTER_SANITIZE_STRING);
$query = 'UPDATE posts
SET title = :title,link = :link,description = :description,userId = :userId
WHERE id = :id';
$statement = $pdo->prepare($query);
if (!$statement) {
die(var_dump($pdo->errorInfo()));
}
$statement->bindParam(':id ',$id,PDO::PARAM_INT);
$statement->bindParam(':userId ',$userId,PDO::PARAM_INT);
$statement->bindParam(':title',$title,PDO::PARAM_STR);
$statement->bindParam(':link',$link,PDO::PARAM_STR);
$statement->bindParam(':description',$description,PDO::PARAM_STR);
$statement->execute();
}
}
}
html 文件中的表单
<form method="POST">
<div class="form-group">
<label for="title">Title</label>
<input class="form-control" type="text" name="title" id="title" placeholder="Your post's title" required>
<small class="form-text text-muted">Please write the title*</small>
</div>
<div class="form-group">
<label for="link">Link</label>
<input class="form-control" type="link" name="link" id="link" required>
<small class="form-text text-muted">Please write the link*</small>
</div>
<div class="description">
<label for="description">Description </label>
<textarea rows="4" cols="50" class="form-control" name="description" id="description" placeholder="" required></textarea>
<small class="form-text text-muted"> Tell us what do your think!*</small>
</div>
<button type="submit" name="submit">submit</button>
</form>
我收到此错误消息: 致命错误:未捕获的 PDOException:SQLSTATE[HY000]:一般错误:25 列索引超出范围。 '我是 PHP 和 SQLite 的新手'
解决方法
该错误通常表示查询中使用的参数名称与绑定中的参数名称不匹配。
这两行有错别字:
$statement->bindParam(':id ',$id,PDO::PARAM_INT);
$statement->bindParam(':userId ',$userId,PDO::PARAM_INT);
注意参数名称中的额外空格。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。