2012-04-18 2 views
-1

열 A가 true인지 확인하기 위해 쿼리를 실행하려고합니다. true 인 경우 다른 열 B (","로 구분 된 가능한 배열)의 내용을 가져와 해당 내용을 사용하여 다른 테이블을 쿼리합니다. 내 문제는 열 B는 하나의 숫자이거나 ","로 구분 된 10 개의 숫자 일 수 있으며 두 번째 테이블에서 이전 쿼리의 각 열에 대해 쿼리해야합니다. 누군가가 도움이된다면 위대 할 수 있습니다.하나 또는 여러 배열 값으로 테이블 쿼리

편집 : 배열 폭발 기능을 사용하려고했지만 그 값을 포함하도록 다음 테이블을 쿼리하는 방법을 알아낼 수 없습니다.

나는 그것을 배열로 문자열을 변환하는

query = select * from table where location = arrayValue[1] or location = arrayValue[2] 
+0

왜 -1입니까? – Rob

답변

0

여기 텔모 마르케스의 적응하지만 개선 :

<?php 
//Let's say $bcolumn is a string with the values of B column, separated by colons 
$bcolumnArray = explode(",", $bcolumn); 
array_walk($bcolumnArray, 'htmlentities'); 

//Build SQL query 
$SQL = 'SELECT * FROM table'; 
if(count($bcolumnArray)){ 
    $SQL.= ' WHERE IN ("'.implode('", "', $vbcolumnArray).'")'; 
} 

//Query your second table here 
$Qry = mysql_query($sql); 

// Results here : 
while($Res = mysql_fetch_assoc($Qry)){ 
    print_r($Res); 
} 
?> 

나는 ... 또한 PDO를 제안 좀 걸릴 것 : PDO합니다.

+0

결과를 표시하기 위해 foreach()를 실행합니까? – Rob

+0

내 편집보기 ..... –

+0

모두에게 도움을 주신 데 대해 감사드립니다. – Rob

0

사용 PHP의 explode() 기능 같은 것을있는 사진.

<?php 
//Let's say $bcolumn is a string with the values of B column, separated by colons 
$bcolumnArray = explode(",", $bcolumn); 

//Build SQL query 
$sql = "SELECT * FROM table WHERE "; 
for($i=0; $i < count($bcolumnArray); $i++) 
{ 
    $sql .= "location = " . $value; 
    if($i != count($bcolumnArray)-1) 
    { 
     $sql .= " or "; 
    } 
} 

//Query your second table here 
mysql_query($sql); 
?> 

문서 : http://php.net/manual/en/function.explode.php

+0

죄송합니다, 방금 내 게시물을 편집했습니다. 각 반환 값에 대해 "위치"열을 쿼리해야합니다. – Rob

+0

@Rob 제 답변을 수정했습니다. 사실이 코드에서 오류를 테스트하지는 않았습니다. –

+0

당신은 SQL 쿼리에 '$ value'를 집어 넣고 그것을 맹목적으로 실행합니다. 이것은 SQL 주입 공격에 취약합니다. ** 이렇게하지 마십시오 **. 사물을 탈출하는 방법을 모른다면 [PDO] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)를 사용하십시오 정확히. 다른 데이터를 반복하는 것은 위험한 패턴이므로 이러한 경우 숫자 만 사용할 수도 있습니다. 그 수는 당신이 통제 할 수없는 HTTP 매개 변수로 올 수 있습니다. – tadman