Php 如何在一列中选择具有多个值的单元格?
我有一个MYSQL表,有一个大的产品列表。在此产品列表表中有类别、名称、说明、文本等。我想为可用于医院、学校、赛事、体育赛事等行业添加一个修饰符 我现在正在通过PHP/MYSQL运行此查询:Php 如何在一列中选择具有多个值的单元格?,php,mysql,Php,Mysql,我有一个MYSQL表,有一个大的产品列表。在此产品列表表中有类别、名称、说明、文本等。我想为可用于医院、学校、赛事、体育赛事等行业添加一个修饰符 我现在正在通过PHP/MYSQL运行此查询: public function GetIndustrySeries($identifier, $SeriesIDArray = null) { $query = "select ser.Identifier, ser.Model
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];此外,我还必须修改查询字符串的某些部分 感谢您的帮助希望它能接受多种价值观:学校、酒店、医院-您考虑过正常化吗?看见