Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 如何在一列中选择具有多个值的单元格?_Php_Mysql - Fatal编程技术网

Php 如何在一列中选择具有多个值的单元格?

Php 如何在一列中选择具有多个值的单元格?,php,mysql,Php,Mysql,我有一个MYSQL表,有一个大的产品列表。在此产品列表表中有类别、名称、说明、文本等。我想为可用于医院、学校、赛事、体育赛事等行业添加一个修饰符 我现在正在通过PHP/MYSQL运行此查询: public function GetIndustrySeries($identifier, $SeriesIDArray = null) { $query = "select ser.Identifier, ser.Model

我有一个MYSQL表,有一个大的产品列表。在此产品列表表中有类别、名称、说明、文本等。我想为可用于医院、学校、赛事、体育赛事等行业添加一个修饰符

我现在正在通过PHP/MYSQL运行此查询:

public function GetIndustrySeries($identifier, $SeriesIDArray = null)
{            
    $query = "select ser.Identifier,
                        ser.ModelNumber,
                            ser.Title,
                            ser.Caption, 
                            ser.Description, 
                            ser.Picture, 
                            ser.Industry, 
                            cat.TitleText,
                            ser.AutoID, 
                            ser.BasePrice 
                            from ProductSeries ser 
                            inner join 
                            ProductIndustry cat 
                            on 
                            cat.Industry 
                            = 
                            ser.Industry 
                            where
                            ser.Industry
                            like 
                            ?";
    if($SeriesIDArray != null && count($SeriesIDArray) > 0)
        $query .= " and ";
    $i = count($SeriesIDArray);
    $parameters = array();
    $parameters[0] = "s";
    $parameters[1] = $identifier;
    if($SeriesIDArray != null){
        foreach($SeriesIDArray as $id)
        {
            $parameters[0] .= "i";
            array_push($parameters, $id);
            $query .= " ser.AutoID = ?";
            if($i > 1)
                $query .= " or ";
            $i--;
        }
    }

    $stmt = $this->_mysqli->prepare($query);
    //$stmt->bind_param('ss', $identifier);                
        call_user_func_array(array($stmt,'bind_param'), $parameters);
    $stmt->execute();
    $stmt->bind_result($ident2, $model, $title, $caption, $description, $picture, $ident, $catText, $sid, $price);
        $stmt->store_result();        
    if($stmt->num_rows < 1)
    {
        $stmt->close();
        return null;
    }
    $array = array();
    while($stmt->fetch())
    {
        array_push($array, array('seriesLink' => "/products/$ident2/$model", 'seriesTitle' => $title, 'seriesImage' => $picture, 'seriesCaption' => $caption, 'seriesDescription' => $description, "seriesCategoryName" => $catText, "seriesID" => $sid, "basePrice" => $price));
    }
    $stmt->close();        
    return $array;        
}     
我试过在代码的两边使用%修饰符?但我得到了一个错误:

警告:call\u user\u func\u array[函数.call user func array]:第一个参数应该是有效的回调,“array”在C:\wamp\www\database.php的第70行给出


在表中,我有一个行业栏,我想做的是将产品符合条件的行业放在那里,希望它能接受多种价值:学校、酒店、医院

您使用了错误的方法获取数据。call\u user\u func调用一个方法,请参见。您希望使用mysql函数、PDO或数据抽象层(如zend_db、doctrine等)来查询数据。

在我看来,只需循环浏览所需的行业阵列,而不必做“类似”的事情,就会容易得多

$i=0

$query......

....WHERE ( ser.Industry = '".$industry(i)."'";

i++;
while $industry(i) {
  $query.=" OR ser.Industry = '".$industry(i)."'";
  i++;
}
 $query.=")";
重新阅读您的问题,但是您似乎需要一个包含两部分键的中间表,第1列是行业,第2列是产品,然后,您将拥有该产品的密钥和该行业的密钥,您需要做的就是从类别表中选择行,其中新表中有记录,您正在寻找的行业,或者从新表中选择所有行,其中包含第一个表中的类别,以查看所有符合该类别的行业,或行业新表中的所有行,以查看匹配的所有类别

似乎您可以使用更多的表,因为类别看起来像一个表,行业看起来像另一个表,产品看起来像另一个表。请记住第一条规则,数据应该依赖于键、整个键以及除键之外的任何内容

希望这有帮助。
SteveK

这是我的表的组合,在行业中没有相同的值,并且$parameters中有$identifier部分[1];此外,我还必须修改查询字符串的某些部分

感谢您的帮助

希望它能接受多种价值观:学校、酒店、医院-您考虑过正常化吗?看见