получить записи из 2 таблиц и проверить, существует ли представленное значение идентификатора флажка

у меня есть эта форма, которая выбирает флажок результаты из

  1. теги

Теперь я хочу сравнить, если представленный идентификатор сообщения и значение существуют в таблице и выбросить ошибку

$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
}
?>

что я мог возможно сделать из того, что ошибка не стреляет?

Спасибо за помощь ребята

0

Решение

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();
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector