【问题标题】:PHP where exists Array not doing what it should存在数组的PHP没有做它应该做的事情
【发布时间】: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 前面提供了解决方案,并立即修复了它。

标签: php select where


【解决方案1】:

试试这个方法:

 $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 P.status = 0 ". $where_clouse ."  ORDER BY P.`id`  ASC LIMIT $offset, $limit";

顺便说一句,我认为反引号是没有必要的。

【讨论】:

  • P. 确实完成了这项工作,我没有使用您的代码,只是将 P. 放在 status 前面,这立即解决了问题。以前 WHERE EXIST 行从另一个表中提取数据,但我将两个表合并为一个,然后问题就开始了,所以这就是为什么它与您的版本相比是如此复杂的规则,对我来说,将所有内容都拉两次已经有点傻了。谢谢你的回答,我现在试试,因为它更干净。
  • 不得不稍微改变一下,P.status = '0' 加上那些引号和其他奇怪的符号才能使它工作。现在干净多了,非常感谢!
猜你喜欢
  • 2011-09-28
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多