我已经在这个问题上工作了一段时间,我已经被困了几天。我拥有的是一个基本的博客系统,现在我一直在尝试从列表中删除/隐藏帖子。
if(isset($_POST['hideBtn']) && isset($_POST['hidePost'])){
$checked = $_POST['hidePost'];
print_r($checked);
} elseif(isset($_POST['hideBtn']) && !isset($_POST['hidePost'])){
echo "Nothing Selected";
}
列表中显示的每个帖子都有一个复选框。
<input type="checkbox" name="hidePost[]" value="<?php echo $post_id;?>">
现在,当我运行上面的脚本并检查 10、8 和 4 后并按下“hideBtn”按钮时,我得到:
数组( [0] => 10 [1] => 8 [1] => 4 )
这就是我卡住的地方。我正在尝试获取该数组的值并在 MSQL 查询中使用它们来查找我想要隐藏的 post_id:
if(isset($_POST['hideBtn']) && isset($_POST['hidePost'])){
$checked = $_POST['hidePost'];
print_r($checked);
$hide_post = 'UPDATE post SET hide_post=1
WHERE post_id IN (' . implode(',', array_map('intval', $checked)) . ')';
$db->query($hide_post);
} elseif(isset($_POST['hideBtn']) && !isset($_POST['hidePost'])){
echo "Nothing Selected";
}
这给了我与以前相同的结果:
数组( [0] => 10 [1] => 8 [1] => 4 )
并且数据库没有变化。
这是数据库表,hide_post 默认为 0:
post
post_id user_id 标题正文 hide_post
编辑
好吧,看来我的问题是由于一个连接上的数据库查询过多。
这是我在页面顶部包含的内容:
<?php
//get record count
$record_count = $db->query("SELECT * FROM post");
//number of posts per page
$per_page = 4;
//number of pages
$pages = ceil($record_count->num_rows/$per_page);
//get page number
if(isset($_GET['p']) && is_numeric($_GET['p'])){
$page = $_GET['p'];
}else{
$page = 1;
}
if($page<=0){
$start = 0;
}else{
$start = $page * $per_page - $per_page;
}
$prev = $page - 1;
$next = $page + 1;
//get post information from database
$query = $db->prepare("SELECT post_id, title, LEFT(body, 100) AS body, posted, category, user_name FROM post
INNER JOIN categories ON categories.category_id=post.category_id
INNER JOIN user ON user.user_id=post.user_id
WHERE hide_post = 0
order by post_id desc limit $start, $per_page");
$query->execute();
$query->bind_result($post_id, $title, $body, $posted, $category, $user_name);
?>
从我读到的关于我得到的错误的信息中:Commands out of sync; you can't run this command now
我想我需要使用mutli_query
或者$stmt->store_result()
,但这是我第一次使用 php 和 mysql,我不知道如何去做。
编辑 2
好吧,我找到了另一种修复它的方法,我所做的只是将隐藏帖子的查询移动到while()
运行实际获取帖子信息的查询下方。我希望我能早点意识到这一点,呵呵。