Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 让mySQL子字符串工作时出现轻微问题_Php_Mysql_Substring - Fatal编程技术网

Php 让mySQL子字符串工作时出现轻微问题

Php 让mySQL子字符串工作时出现轻微问题,php,mysql,substring,Php,Mysql,Substring,我知道我与此非常接近,因为我之前在这个主题上得到了一些帮助,但是当我想让相同的代码在网站的另一部分工作时,我似乎无法让它再次工作 我正在做的是尝试获取字符串的第一部分(该部分被数据库中的-分隔符打断),因此db条目slug将是foo bar rules,我需要从该字符串中抓取foo,其中slug不等于foo-bar-rules,而是等于phoo-bar-rules或few-bar-rules。如果我的解释不是很有帮助,我很抱歉,我很难向自己解释:D 提前谢谢你,任何能帮我的人 <?php

我知道我与此非常接近,因为我之前在这个主题上得到了一些帮助,但是当我想让相同的代码在网站的另一部分工作时,我似乎无法让它再次工作

我正在做的是尝试获取字符串的第一部分(该部分被数据库中的
-
分隔符打断),因此db条目
slug
将是
foo bar rules
,我需要从该字符串中抓取
foo
,其中
slug
不等于
foo-bar-rules
,而是等于
phoo-bar-rules
few-bar-rules
。如果我的解释不是很有帮助,我很抱歉,我很难向自己解释:D

提前谢谢你,任何能帮我的人

<?php define ('PAGEPARENT', 'foo');
      define ('PAGECHILD', 'bar');
      define ('PAGEGRANDCHILD', 'rules');

    switch (PAGEGRANDCHILD) {
        case PAGEGRANDCHILD:
            $pageGrandChild = PAGEGRANDCHILD;
            $rangeRelationResult = mysql_query("SELECT DISTINCT SUBSTRING(slug, 1, INSTR(slug, '-') - 1) result
                                                FROM web_navbar_links
                                                WHERE SUBSTRING(slug FROM INSTR(slug, '-".PAGECHILD."-') + 1) = '$pageGrandChild'
                                                AND grandchild = 1
                                                AND slug != '".PAGEPARENT."-".PAGECHILD."-".PAGEGRANDCHILD."';
                                                ");
            while ($rangeRelationRow = mysql_fetch_object($rangeRelationResult)) { ?>
                <a href="?page=<?php echo $rangeRelationRow->result."-".PAGECHILD."-".PAGEGRANDCHILD; ?>&pageLevel=<?php echo $_GET['pageLevel']; ?>" title="<?php echo PAGEGRANDCHILD."&nbsp;for&nbsp;".$rangeRelationRow->result; ?>"><div id="<?php echo $rangeRelationRow->result; ?>Channel"><?php echo "&raquo;&nbsp;".ucwords(PAGECHILD)." for ".$rangeRelationRow->result; ?></div></a> <?php
            }
        break;
    }  ?>

查询是因为语法原因而失败,还是逻辑不起作用

不管怎样,我觉得你的报价有点不对劲

在您的查询结束时,您

AND slug != '".PAGEPARENT."-".PAGECHILD."-".PAGEGRANDCHILD."';
                                            ");
我想你需要

AND slug != '".PAGEPARENT."-".PAGECHILD."-".PAGEGRANDCHILD."')";
还有,为什么要延长使用define的时间

你能这么做吗?(如果您正在使用类,我可能会遗漏一些内容…)


我不完全确定我是否正确回答了你的问题,但是
是一种选择吗

SELECT .... WHERE slug LIKE "%-rules" AND slug != "foo-bar-rules" 

将选择其slug以
-rules

结尾的所有记录。您让我查看查询,我发现它有点错误,应该是。。还有鼻涕虫“.PAGEPARENT.”-“.PAGECHILD.”-“.Page孙子。””;您的修订不会关闭查询语句mysql\U查询(“。我在全站范围内使用defines,因为主题有3种不同的样式,defines帮助将其排序,使更改主题更容易,而不是更改1000行代码:)遗憾的是,sql查询仍然不起作用。我很感激你的帮助。还有谁能帮忙吗?有谁能看看这个吗?仍然没有解决,我非常想让它工作,我相信我知道代码是如何工作的,这只是
WHERE
子句的一个问题,我需要它,以便var$page孙子匹配数据库中字符串的最后一部分,即
foo bar rules
。有什么想法吗?这很有魅力,佩卡,非常感谢你的快速回复和对双帖子的评论,我不想这样做,但没有其他选择重新点燃我原来的帖子,我在这里是新手,看不到任何选择重新发布我的帖子,所以它会回到最近问题列表的顶部。网站应该做的事情;如果还没有:)@Daniel是的,没问题。有关如何引起对旧问题的注意,请参见@Pekka,很抱歉打扰您,但是您是否还知道如何在SELECT子句中使用SQL中的LIKE子句?我需要找到一种方法,将带有连字符分隔符的字符串的最后一部分,即foo bar rules(我如何从该字符串而不是整个字符串中获取
rules
)@Daniel你的意思是?不,你不能那样用。这部分你必须使用mySQL字符串函数来构建,或者稍后在PHP中解析出来(可能更容易)。@Pekka,我想我可以像你说的那样解析出来,在PHP中分解并调用该字符串的数组索引,但是如果在mySQL中有一种更简洁的方法来实现这一点,我很想学习,我已经研究了INSTR并找到了,我已经学会了如何使用INSTR获取字符串的第一个子字符串,但如何更改它以获取最后一部分?我将在另一个回复中显示如何获得第一个子字符串。
SELECT .... WHERE slug LIKE "%-rules" AND slug != "foo-bar-rules"