2014-06-07 1 views
0

$content은 '자세한 설명'이있는 변수입니다. product_id는 MySQL의 테이블의 상세한 설명 ($content)의 문자열을 포함 할 수 있습니다 열이 나는 product_id$content 변수에 포함 된 경우 기록을 찾을 것이다 SELECT 문을 만들려고하고 productsPHP 및 MySQL SELECT 하위 문자열

라고합니다. 그리고 나는 다음과 같이 올라와있다 웹 사이트에 의하면 선택 (SELECT) staement 에서 url 필드 receive_sms라는 다른 테이블을 업데이트 할 ....하지만

$mysqlic = mysqli_connect("testsms.cloudaccess.net", "username", "password", "testsms2"); 
$prod_res=mysqli_query($mysqlic,"SELECT url from products 
           WHERE %product_id% LIKE %$content%"); 
mysqli_query($mysqlic,"INSERT INTO recieve_sms (comments) VALUES ('$prod_res')"); 

어떤 아이디어를 작동하지 않습니다?

답변

0

이 있어야한다 :

$prod_res = mysqli_query($mysqlic, "SELECT url from products 
            WHERE '$content' LIKE CONCAT('%', product_id, '%')"); 

나 :

$prod_res = mysqli_query($mysqlic, "SELECT url from products 
            WHERE LOCATE(product_id, '$content') != 0"); 

당신은 따옴표로 $content을 넣어해야합니다.

실제로 미리 준비된 쿼리를 사용하면 '$content'은 자리 표시 자 ?이됩니다.

$row = mysqli_fetch_assoc($prod_res); 
$url = $row['url']; 
+0

감사합니다. Barmar. – user3718273

+0

Unfortunatelty, 여전히 작동하지 않습니다. 이 사이트에 대한 더 많은 조사를 한 후에 SELECT 문에 할당 할 변수가 될 수 있습니까? SET 명령을 사용하여 $ prod_res 변수를 할당해야합니까? – user3718273

+0

'mysqli_query()'는'SELECT'에서 컬럼의 값을 반환하지 않습니다. 인출 함수를 호출 한 다음 그로부터 값을 가져와야합니다. 내 업데이트 답변을 참조하십시오. – Barmar

0

글쎄, 왜 내가 필드 이름에 와일드 카드를 사용하는지 이해가 안됩니다. 당신은 값이 해당 필드의 값에 포함되어 있는지 확인하려면이 변경을 고려 :

... WHERE %product_id% LIKE %$content%); 

또한

... WHERE product_id LIKE '%$content%'); 

에, SQL 주입을 방지하기 위해 준비된 문을 사용하십시오. 당신은 그들을 지원하는 MySQLi를 사용하고 있습니다.

EDIT은 또한 mysqli_query의 반환은 MySQLi 자원이다. 원하는 값에 액세스하려면 리소스에서 결과를 가져와야합니다.

+0

감사 시몬 : 당신이 조회 후

, 당신은 열 값을 얻을 수 mysqli_fetch_assoc()를 호출해야합니다. 매우 유효한 포인트. mysqli를 어떻게 사용하지 않습니까? 나는 PHP와 MySQL에 익숙하지 않다. 배운 내용 대부분은이 포럼에서 다른 코드를 보는 것입니다. – user3718273

+0

' '% $ content %''주위에 따옴표가 필요합니다. 그러나 이것은 질문이 요구 한 것과 반대입니다. 이것은 'content_'가'product_id'에 들어있는 레코드를 찾고, 그는 _product_id가 $ content_에 포함되어 있다고 말했습니다. – Barmar