【发布时间】:2016-12-23 04:09:50
【问题描述】:
下面的代码应该只返回带有status=0 的表行,但它会加载所有行:
$where_clouse='';
get_header();
$sql="SELECT P.`id`, P.`project_title`, P.`project_length`, P.`quality_level`, P.`writing_style`,
P.`article_purpose`,P.`author_voice`,P.`special_instruct`,P.`approve`,P.`status`,P.`date`,P.`budget`,P.client_id
FROM `wp_project` AS P
WHERE EXISTS (SELECT * FROM `wp_project` as A WHERE `status` = '0') ".$where_clouse." ORDER BY P.`id` ASC LIMIT $offset, $limit";
$projects = $wpdb->get_results($sql, ARRAY_A)
这里的代码将$projects 进一步拉下并正确放入数组中,但不仅仅是status=0 的项目,所有其他项目也是如此。
我在这里做错了什么?
<?php if(count($projects) > 0) {
foreach($projects as $project) {
$title=$project['project_title'];
?>
我想补充一点,这个$sql 查询有几行额外的行,所以我把它删掉了,我不知道这段代码应该做什么,例如我不明白这个 WHERE EXISTS。
我是否在这里将所有内容都拉了两次,因此它会抓取所有行?
【问题讨论】:
-
我想知道你的麻烦是否来自
WHERE EXISTS (SELECT * FROM 'wp_project' as A WHERE 'status' = '0')- 你可能想添加更多子句来引用过滤器应该如何检查存在,[看看这些例子],例如在第一个例子中定义城市中是否存在给定的商店类型。如果您想使用not status = 0过滤掉所有内容,只需使用WHERE.. 好吧,没有您的表结构以及您想从表中检索什么作为线索.. 很难猜测。 -
谢谢,老实说,我对基本概念一无所知,只是有很多代码,通过复制/粘贴我完成了很多,但有时我会卡住。没有必要使用 EXISTS 是有道理的,因为我已经知道它存在,早些时候它从两个表中提取数据,例如项目和文章,所以它们都被编织在一起。无论如何,下面的海报通过将 P. 放在 status 前面提供了解决方案,并立即修复了它。