Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 SQL多重请求_Php_Mysql_Sql - Fatal编程技术网

Php SQL多重请求

Php SQL多重请求,php,mysql,sql,Php,Mysql,Sql,$CATID是一系列值,如下所示:11,12,13,14 在我的sql请求中,我放置了:其中c.IsActive=1和c.PkID='$卡提兹。” 但它只接受一个论点 对于以下代码,它仅显示最后一个值,而不是所有值 我尝试使用爆炸来消除“,”,并使用一个数组和一个简单的for $result = doQuery("SELECT DISTINCT c.PkID, c.CategoryName FROM " . HC_TblPrefix .

$CATID是一系列值,如下所示:11,12,13,14

在我的sql请求中,我放置了:其中c.IsActive=1和c.PkID='$卡提兹。”

但它只接受一个论点

对于以下代码,它仅显示最后一个值,而不是所有值

我尝试使用爆炸来消除“,”,并使用一个数组和一个简单的for

    $result = doQuery("SELECT DISTINCT c.PkID, c.CategoryName
                        FROM  " . HC_TblPrefix . "categories c 
                        WHERE c.IsActive = 1 AND c.PkID = '" . $catIDs . "'
                        ORDER BY c.CategoryName");

    $donnee=explode(",",$catIDs);

    for($i=0;$i<sizeof($donnee);$i++)       
     {
        $resultCat = doQuery("SELECT c.PkID, c.CategoryName
                        FROM " . HC_TblPrefix . "categories c
                        WHERE c.IsActive = 1 AND c.PkID = '" . $donnee[$i] . "'
                        ORDER BY c.CategoryName");
    }   

        if(!hasRows($resultCat))
            return 0;

        echo '
        <ul>';
        while($row = mysql_fetch_row($resultCat)){
            echo '
        <li><a itemprop="eventType" href="'/index.php?com=searchresult&amp;t='.$row[0].'" rel="nofollow">'.cOut($row[1]).'</a></li>';
        }
        echo '
        </ul>';
它的格式必须如下所示:“1”、“4235”、“4312”

请尝试以下方法:

$result = doQuery("SELECT DISTINCT c.PkID, c.CategoryName
                    FROM  " . HC_TblPrefix . "categories c 
                    WHERE c.IsActive = 1 AND c.PkID IN ('". implode("', '", explode(",", $catIDs)) ."')
                    ORDER BY c.CategoryName");

循环只返回最后一个结果的原因是每次都覆盖$resultCat,因此当循环完成时,它只包含最后一个循环迭代的结果。无论如何,这真的不是做你想做的事的好方法。使用上面的解决方案。

如果$catIDs是一个字符串,那么这就足够了

$result = doQuery("SELECT DISTINCT c.PkID, c.CategoryName
                        FROM  " . HC_TblPrefix . "categories c 
                        WHERE c.IsActive = 1 AND c.PkID IN (" . $catIDs . ")
                        ORDER BY c.CategoryName");
如果$catIDs是一个数组,那么这将起作用

$result = doQuery("SELECT DISTINCT c.PkID, c.CategoryName
                        FROM  " . HC_TblPrefix . "categories c 
                        WHERE c.IsActive = 1 AND c.PkID IN (" . implode(",", $catIDs) . ")
                        ORDER BY c.CategoryName");

在MySQL中,可以在中使用。a、b、c中的xxx…多个请求在哪里…??$CATID的来源是什么?它是否来自请求?这不会在每个条目之间加单引号,因此您将搜索字符串“142354312”。这不是PHP-str_replace,,,,,,,,,,,,$catIDsI试图提供帮助而不是关键。我举了一个软件开发人员可以获得他们语言的正确语法的例子,认为这是理所当然的。如果我的评论是错误的,很抱歉,但我不是想批评你的帮助。我只是想指出一些需要纠正的地方,以便让你的方法发挥作用。我想你可能会采纳我评论中的建议,并通过更新来改进你的答案。顺便说一句,不是我否决了这件事。我很早就学会了,除非有充分的理由,否则不要劝阻人们提出解决方案。我感谢你花了这么多时间来回答和解释,我很感激。谢谢。我要指出的是,对于其他从这篇文章中得到帮助的人来说,这个解决方案可以很好地查找整型值,而整型值看起来就像OP想要的一样,但这不适用于字符串值。为此,您需要用单引号将每个逗号分隔的值括起来。鉴于OP不清楚$CATID的结构,这可能是最安全的方法。在再次内爆之前,您可能应该使用intval循环分解结果,假设这是用户输入。@nnichols:同意,假设这是用户输入。值得指出的是,对于任何输入清理,都应该使用mysql\u real\u escape\u字符串来防止。
$result = doQuery("SELECT DISTINCT c.PkID, c.CategoryName
                        FROM  " . HC_TblPrefix . "categories c 
                        WHERE c.IsActive = 1 AND c.PkID IN (" . implode(",", $catIDs) . ")
                        ORDER BY c.CategoryName");