2014-08-27 2 views
0

MySQL의 텍스트 필드에 문자열로 배열 :PHP 삽입 내가이 변수 내부 배열이

mysqli_query($con,"INSERT INTO myTable (thetextfield) VALUES ('$myArray')"); 
:

$myArray; 

그때 나는 텍스트 필드가 데이터베이스에 삽입 해요

문제는 테이블 내용을 살펴본 결과로 "배열"(따옴표 제외) 만 표시된다는 것입니다.

배열을 그대로 삽입하거나 쉼표로 구분하여 삽입하는 방법이 있습니까?

+1

종종 나쁜 생각이지만 ... read시 insert와 unserialize()에 serialize()가 사용된다. –

+0

'implode (',', $ myArray) ' –

답변

4

당신처럼, 제수를 삽입 implode를 사용할 수 있습니다

$arrayString = implode(",", $myArray); 
,

,을 포함하는 문자열이 $myArray 인 경우 갑자기 하나 이상의 배열 항목이 있기 때문에 예기치 않은 결과가 발생할 수 있습니다. (다시 변환하려면 explode을 사용할 수 있습니다.)

json_encode을 사용하여 배열을 JSON으로 인코딩 할 수도 있습니다.

$arrayString = json_encode($myArray); 

훨씬 안전합니다.

물론 그냥 PHP 배열을 직렬화 할 수 있습니다 (json_decode을 사용하여 다시 배열 디코딩) :

$arrayString = serialize($myArray); 

이 옵션의 사기꾼은 출력 문자열 만 달리, PHP 읽을 수 있다는 것입니다 JSON은 널리 지원됩니다. MySQL은 그것을 인식하지 못합니다과 같이 MySQL의에 직접 배열을 삽입 할 수 없습니다

1

내가 그것을 저장하기 전에 serialize 배열을 사용하여 DB에서 검색 한 후이를 다시를 unserialize 당신을 제안합니다,

"INSERT INTO myTable (thetextfield) VALUES ('".serialize($myArray)."')" 

당신이 그것을 달성하기 위해 사용 내파 기능을 쉼표로 구분하여 저장하려면,

"INSERT INTO myTable (thetextfield) VALUES ('".implode (", ", $myArray)."')" 
1

사용 implode

$newString = implode(",", $myArray); 
"INSERT INTO myTable (thetextfield) VALUES ('$newString')" 
0

을 (unerialize은 배열로 다시 문자열을 변환 할 수 있습니다).

당신은 PHP는 내파를 사용하거나 배열을 변환해야하거나 php..In와 함께 당신이뿐만 아니라 배열 데이터를 검색하기가 쉬울 것입니다 그런 식으로 직렬화 또는로 json_encode를 사용할 수 있습니다.

+0

방금 ​​생각했던 것과 똑같은 대답을 upvoted해야한다. 다른 대답을주는 것보다. –

+0

예, 실제로 질문에 대답 할 때이 질문에 대한 대답이 없었습니다. – user2798689