2013-04-19 5 views
1

데이터베이스의 한 필드와 관련된 여러 확인란이 있습니다. 확인 된 값은 인식되어 문자열에 저장되지만 값은 데이터베이스에 저장되지 않습니다. 테이블 이름과 필드 이름이 모두 정확합니다. 누구든지 내가 뭘 잘못하고 있는지 아이디어가 있습니까? 미리 감사드립니다.하나의 데이터베이스 필드에 여러 개의 확인란 저장

* 제공되는 코드가 안전하지는 않지만 실제로는 실제 코드에 적용하기 전에 implode 함수를 테스트하기위한 것이라는 점을 유의하십시오.

내 HTML 코드는 다음과 같습니다

<tr> 
    <td> 
     <input type="checkbox" name="test[]" value="'apple'">apple<br> 
     <input type="checkbox" name="test[]" value="'banana'">banana<br> 
     <input type="checkbox" name="test[]" value="'pear'">pear<br> 
     <input type="checkbox" name="test[]" value="'grapes'">grapes<br> 
     <input type="checkbox" name="test[]" value="'pineapple'">pineapple<br> 
     <input type="checkbox" name="test[]" value="'strawberries'">strawberries 
    </td> 
</tr> 

내 PHP 코드는 다음과 같습니다

print_r($_POST); 
session_start(); 

$p_test = $_POST["test"]; 
$in = implode(',', $p_test); 

include ("dbConnect.php"); 

$dbQuery = "INSERT into test(testValues) VALUES($in)"; 
echo $dbQuery; 
$result = mysql_query($dbQuery); 

$ _POST와 $ dbQuery과 같이 화면에 인쇄되고있다 :

배열 ([sbp] => N/A [제출] => 제출)

(0) => '사과'[1] => '바나나' 테스트 (testValues)에

INSERT VALUES ('사과', '바나나', '배')

이 성공적으로 확인 값을 받고 문자열에 넣어하지만 값이 데이터베이스에 갈 수 없습니다입니다 들.

+0

데이터를 압축하지 마십시오. 유용한 검색을 수행하는 것을 중지합니다. 조인 테이블 사용 : http://en.tekstenuitleg.net/articles/software/database-design-tutorial/many-to-many.html – Quentin

답변

1
INSERT into test(testValues) VALUES('apple','banana','pear') 

SQL이 하나의 열에 세 개의 값을 삽입하려고합니다.

HTML에 인용 부호가 포함되어있는 이유를 모르지만 상관없이 이스케이프해야합니다. PDO (mysql_* 함수는 사용되지 않음)으로 전환하고 매개 변수화 된 쿼리를 사용합니다. 그렇게하면 자동으로 탈출하게됩니다.

0

$dbQuery = "INSERT into test(testValues) VALUES(". serialize($in).")"; 

을 시도하고 당신은 당신이이 일을하려고하는 경우 다시 한 번

0

배열로 얻을 수 unserialize()를 사용하여 검색 할 때 :

insert into test(testValues) 
values 
('apple,banana,pear') 

가 당신에게 행운의 별 감사 네가 실패했다고. Quentin이 제안한 것처럼, 그것은 현명하지 못한 접근입니다. 반면에 우리는 이것을 가지고 있습니다 :

insert into test(testValues) 
values 
('apple') 
, ('banana') 
, ('pear') 

당신의 데이터를 훨씬 유용하게 만들 것입니다.

관련 문제