从 2 个表中获取记录并检查提交的复选框 ID 值是否存在



>我有这个表单,从中获取复选框结果

  1. 标签

现在我想比较提交的帖子 ID 和值是否存在于表中并抛出错误

$stmt = $db->prepare('SELECT * FROM posts_tags WHERE post_id = :post_id AND tag_id = :tag_id');
$stmt->bindParam(':post_id', $postID, PDO::PARAM_INT);
$stmt->bindParam(':tag_id', $postTag, PDO::PARAM_INT);
$r = $stmt->rowCount();
if(!empty($r)){
$error[] = 'Please do not select exsisting tag.';
}

这是我表单中的一些代码

<input type='hidden' name='postID' value='<?php echo $row['postID'];?>'>
<p><label>Tags</label><br />
<div class="boxcheck">
<?php                   
$stmt = $db->prepare('select * from blog_tags');
$stmt->execute();
$tag = $stmt->fetchAll();
foreach($tag as $tags){
?>
<input type="checkbox" name="postTag[]" value="<?php echo $tags['tagID']; ?>"> <?php echo $tags['tagName']; ?><br /> 
<?php
}
?>

错误没有触发,我能做什么?

谢谢你的帮助伙计们

1st :$postTag是数组 绑定它作为一个整数 .

2nd:你需要在查询中使用IN子句

3rd:你需要以这种方式绑定值。

$inClause=array();
$i=1;
foreach($postTag as $row){
$inClause[]=':postTag'.$i;
$i++;
}
$stmt = $db->prepare('SELECT * FROM posts_tags WHERE post_id = :post_id AND tag_id IN ('.explode(',',$inClause).')');
$stmt->bindParam(':post_id', $postID, PDO::PARAM_INT);
$i=1;
foreach($postTag as $row){
$stmt->bindParam('postTag'.$i, $row, PDO::PARAM_INT);
$i++;
}
$res =    $stmt->execute();
$r = $stmt->rowCount();

最新更新