2013-02-22 66 views
2

我一直在试图寻找这一点,但我一直寻找解决问题的“MySQL来多维数组的”解决方案使用多维数组数据

我有一个多维数组,我想在MySQL中查找数据使用数组中的值来搜索我的MySQL数据库并输出我需要的任何内容。

我使用WHERE子句吗? IN子句?我需要一些帮助

我有这样的数组:

Array 
(
    [0] => Array 
     (
      [id] => 333 
      [name] => Watches 
      [pluralName] => Watches 
      [shortName] => Watches 
     ) 

    [16] => Array 
     (
      [id] => 111 
      [name] => Bar 
      [pluralName] => Bars 
      [shortName] => Bar 
     ) 

) 

如果我有一些语法是这样的:

$categorySet = $dbh->prepare("SELECT c.*,ci.*,b.business_id,b.idbusiness FROM 
categories c 
JOIN categories_items ci ON ci.idcategory = c.idcategory 
JOIN businesses b ON b.idbusiness = ci.id_items 
WHERE c.id = :id OR c.name LIKE :name"); 
$categorySet -> bindParam(:name, $array['id']); 
$categorySet -> bindParam(:name, '%'.$array['name'].'%'); 
$categorySet -> execute(); 

我喜欢想通过MySQL的搜索,但想从阵列中获得带有手表或棒的输出。

有人可以帮助我吗?

谢谢!

回答

3

要检查条件,你总是需要WHERE条款,所以你一定需要它。

第二个IN子句允许使用数组,当数组处于array(1,2,3,4,5);形式时。

在示例

SELECT 
* 
FROM table_name 
WHERE 
    fields IN (array(1,2,3,4,5)); 

更多信息

$id_sql = array(); 
$name_sql = array(); 

foreach($conditionArray as $arry) 
{ 
     $name_sql[] = $arry['name']; 
     $id_sql[] = $arry['id']; 
} 

$ids = implode(',',$id_sql); 
$names = implode(',',$name_sql); 

SELECT * FROM table WHERE id IN ($ids) AND name IN ($names) 

如果可以,那么请做出名称和ID单独的数组,这样你就不需要使用for-each只是implode它并发送给MySQL声明。

+0

这是否意味着我必须更改我的数组格式?另外,字段由什么组成?我是否像'id,name IN(array(1,2,3,4,5))'那样编写它? – hellomello 2013-02-22 06:47:45

+0

@andrewliu no no no bro ...你需要为每个name和id创建数组,然后使用AND子句...并且我给出了字段的示例,它可以是任何类型。 – 2013-02-22 06:52:23

+0

哦,我看到了,我不认为我想要使用AND子句,我想使用OR。所以它应该看起来像这样? ''''''''''''''''''''WHERE name IN(array(name1,name2,etc ...))OR id IN(array(id1,id2,etc ...));' – hellomello 2013-02-22 06:53:21

0
<?php 

$arr_queries = array ('values','values','values') 
$arr_results = array(); 

foreach($arr as $values) 
{ 
    $sql = //do sql query here using $values, 
    if(mysql_num_rows($sql) != 0) 
    { 
    while($row = mysql_fetch_array($sql)) 
    { 
     $temp = array(); 
     $temp[] = $row[0]// get first column value, add other column value on $temp array 
    } 
    } 

    $arr_results[] = $temp; 
} 

?> 
+0

$ arr_results将得到所有返回的值在你的SQL查询 – user2098328 2013-02-22 06:46:00

+0

嘿老兄他是要求查询不怎么显示它...要小心 – 2013-02-22 06:46:10

+0

在除了不处理查询外,您还有array_查询不起任何作用 – Lighthart 2013-02-22 07:03:54