у меня есть эта форма, которая выбирает флажок результаты из
Теперь я хочу сравнить, если представленный идентификатор сообщения и значение существуют в таблице и выбросить ошибку
$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
}
?>
что я мог возможно сделать из того, что ошибка не стреляет?
Спасибо за помощь ребята
1-й: $postTag
это массив вашего Binding это как INT.
2-й: вам нужно использовать IN
предложение в запросе
3-й: Вы должны связать значения таким образом.
$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();
Других решений пока нет …