2016-09-29 4 views
0

검색 막대의 모든 항목을 찾기 위해 php 배열과 관련된 SQL 요청이 있습니다.배열의 요소와 행을 일치 시키십시오.

나는 이것을 할 수 없다. 내 코드입니다 :

$texte = $_POST['texte']; 
    $texte = explode(" ", $texte); 
    $query_parts = array(); 

    //Proximité 
    foreach ($texte as $value) { 
     $value = "%".$value."%"; 
    } 



    $sql = "SELECT * FROM PROXIMITE WHERE titrefr LIKE ':texte'"; 
    $req = $bd->requete_obj($sql, array('texte'=>$texte)); 

    while($select = $req->fetch()){ 
     error_log('Test'); 
    } 
+0

request_obj을 나는 프랑스어 해요 – scaisEdge

+0

을 requete_obj하지, 이것은 내가 만든 데이터베이스 클래스입니다. –

+0

자리 표시자를 사용하기 때문에 자리 표시 자 자체는 넣지 않으려 고합니다. 그것은 작은 따옴표를 제거합니다 :'''. 당신이 PDO를 사용하고 있기 때문에, 아마 당신을위한 인용문을 처리 할 것입니다. – tadman

답변

1

foreach 루프는 값으로 전달되기 때문에 실제로 변수를 수정하지 않습니다 - 복사본을 의미합니다. 을 수정하려면 참조를 통과해야 :

foreach ($texte as &$value) { 
    $value = "%".$value."%"; 
} 

그런 식으로, 배열의 실제 값이 조작되고있다.

secondly : 데이터베이스에 매개 변수로 배열을 지정할 수 없습니다. 대신 배열을 반복 할 수 있습니다. 첫 번째 루프에서 그것을 구현하는 경우, 당신도 더 이상 참조를 사용할 필요가 없습니다 :

$sql = "SELECT * FROM PROXIMITE WHERE titrefr LIKE :texte"; 
foreach ($texte as $value) { 
    $value = "%".$value."%"; 
    $req = $bd->requete_obj($sql, array('texte'=>$value)); 
    while($select = $req->fetch()){ 
     error_log('Test'); 
    } 
} 
+0

PHP 알림 : 배열에서 문자열로 변환 –

+0

감사합니다! :)) –

+1

당신은 환영합니다.하지만 데이터 흐름을 재구성하는 것을 고려해야합니다. 모든 단어에 대해 하나의 쿼리를 실행하는 것이 정확하지는 않습니다. –

관련 문제