2015-10-14 44 views
-2

**我想使用條件數組來檢索品牌名稱來創建json格式。但是,我無法得到它。結果是「沒有找到記錄,怎麼辦? *如何在數組中使用where語句

<? 

    $brand_array=array('sony','samsung');     
     $data=implode(',',$brand_array);   
     $query_brand=mysql_query("SELECT ttdbrand.name 
            FROM `taxonomy_term_data` as ttdbrand 
            INNER JOIN 
             `node` as n 
            INNER JOIN   
             `field_data_field_brand` as fbrand 
            ON n.nid=fbrand.entity_id 
            AND ttdbrand.tid=fbrand.field_brand_tid         
            Where ttdbrand.name in ('$data')"            
           ) or die(mysql_error()) ; 


     while($row = mysql_fetch_assoc($query_brand)) {   
      $row_array[]=$row;     
     } 
?> 
+0

檢查查詢直接通過在phpmyadmin中運行,沒有'where'放置的問題。 –

+1

'INNER JOIN \'node \'as n' ....你在加入什麼? –

+1

'SELECT ttdbrand.name FROM \'taxonomy_term_data \'作爲ttdbrand INNER JOIN \'field_data_field_brand \'作爲fbrand ON ttdbrand.tid = fbrand.field_brand_tid INNER JOIN \'節點\'正 關於n。 (''data')' –

回答

0

代替陣列使串像 你的用戶陣列( 'A', 'b', 'C')值;

run this array and make string 
$str = ''; 
e.g while (your array) 
    $srt .= '\''.$value.'\''.','; 

    $str look like 'a','b','c', 

after loop is over remove ',' rtrim and user this $str variable insted of $data 
0

替換這裏,安排引號

內串
$data=implode(',',array_map(function($v){return "'".$v."'"},$brand_array)); 
0

它不工作,因爲這樣的:

Where ttdbrand.name in ('$data') 

會導致這個:

Where ttdbrand.name in (sony,samsung) 
//no quotation marks. you can't pass strings like that, sql will fail 

像@MarkBaker說,你需要添加像報價:

$data=implode("','",$brand_array);