2013-02-22 65 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