>我有这个表单,从中获取复选框结果
- 标签
现在我想比较提交的帖子 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();