2012-11-19 5 views
0

MySQL 데이터베이스에서 열 목록을 배열과 비교하려고합니다. 어떻게하면 MySQL 내에서이 작업을 수행 할 수 있습니까? 여기MySQL에서 어떻게 작성합니까?

내가 PHP에서 수행 할 작업은 다음과 같습니다

<?php 
$array = array("a", "b", "c", "d"); 
// 'c' doesn't exist in the database 
$result = $this->mysqli->query("Query"); 
// Result should be array("a", "b", "d") 
?> 

어떻게 이런 짓을 했을까

?

+0

이런 종류의 일은 프레임 워크 나 ORM을 사용하면 쉽게 미칠 수 있습니다. mysqli를 직접 사용하여 어렵게하는 이유는 무엇입니까? – tadman

답변

0

the IN clause으로이를 수행 할 수 있습니다.

SELECT * FROM <table> WHERE <col> IN <array> 
0

이 시도 :

// The array 
$array = array("a", "b", "c", "d"); 

// This takes the array and puts it into a string like "a,b,c,d" 
$array_for_query = implode(',', $array); 

$result = $this->mysqli->query("SELECT * FROM table WHERE the_letter IN ({$array_for_query})"); 

각각 테이블 및 열 이름 tablethe_letter를 교체합니다.

+2

쿼리에서 사용자 데이터를 신뢰할 수 없다는 것을 잊지 마십시오. 사용자로부터 수집 된 데이터 배열을 사용하고 있다면 mysqli_real_escape_string을 사용하여 데이터를 직접 패딩하기 전에 이스케이프해야한다. 이렇게하면 SQL 주입 공격을 방지 할 수 있습니다. – jtv4k

관련 문제