我在WordPress、MySQL和PHP中工作。一旦一个项目被添加到";读取";表;项目";表数据重复(每次我添加多个要检查的项时,这些项都重复。因此,如果read中有4个项,它就会相乘(。我似乎不明白它为什么要这么做。我的代码和数据库信息如下:
$GLOBALS['a']
是一个变量,用户可以将其放入快捷代码中,该快捷代码根据项目所在组(列表(的ID对项目进行排序。
代码
<div class="user-read">
<?php
global $wpdb;
$q2_read = $wpdb->prefix.'plugin_read';
$q2_item = $wpdb->prefix.'plugin_items';
$q2_results = $wpdb->get_results("SELECT $q2_item.id, $q2_item.listID, $q2_item.itemDESC, $q2_item.creator, $q2_item.title, $q2_read.userID, $q2_read.itemID, $q2_read.list FROM $q2_item INNER JOIN $q2_read ON $q2_item.id != $q2_read.itemID");
$new_array = array_filter(
$q2_results,
function($v) { return $v->listID == "'" + $GLOBALS['a'] + "'"; }
);
?>
<?php foreach($new_array as $i ) {
$bookTITLE = $i->title;
$groupID = $i->listID;
$groupCREATOR = $i->creator;
$bookDESC = $i->itemDESC;
$bookID = $i->id;
$current_user = wp_get_current_user();
?>
<?php if($groupCREATOR == ''.$current_user->ID.''|| $groupCREATOR == 'administrator') { ?>
<div class="user-wrap">
<div class="inner-wrap">
<div><span class="check"><form><input type="checkbox" value="<?php echo $bookID;?>"></form></span></div>
<div>
<b><?php echo $bookTITLE; ?></b><br>
<?php echo $bookDESC ; ?>
</div>
</div>
</div>
<?php } else {
}; ?>
<?php }; ?>
plugin_read
表:
id | 用户id | 项id | 列表|
---|---|---|---|
1 | 1 | 2 | <1>|
3 | 2 | 3 | 1 |
要从items
中提取read
中不存在的行,可以简单地使用NOT in仅提取read
中不存在行,如下所示:
<?php
$q2_results = $wpdb->get_results("
SELECT *
FROM $q2_item
where $q2_item.id NOT IN (select itemID from $q2_read)
");