2013-07-19 2 views
0

PHP 배열에 단일 행이 있습니다.이 행을 mySQL 데이터베이스에 삽입하고 키와 값을 문자열에 삽입 한 다음 Insert 문에서 해당 문자열을 사용하고 싶습니다.implode() 배열을 사용하여 mySql 데이터베이스에 레코드 삽입

$fields = implode(",", array_keys($_POST)); 
$newdata = implode(",", $_POST); 

$query = (
"INSERT INTO Food_entered ($fields) 
VALUES ('$newdata')"); 

$result = mysqli_query($dbc, $query); 

문자열을 만들 수 있는데 행이 삽입되지 않고 적절한 형식으로 표시됩니다. 간단한 접근법처럼 보이지만 내가 무엇을 놓치고 있는지 확실하지 않습니다. @Barmar가 지적했듯이

$fields = implode(",", array_keys($_POST)); 
$newdata = implode(",", array_map(function($x) use ($dbc) { 
    return "'" . $dbc->real_escape_string($x) . "'"; 
}, $_POST)); 

$query = (
"INSERT INTO Food_entered ($fields) 
VALUES ($newdata)"); 

$result = mysqli_query($dbc, $query); 
+0

당신이 다시'$의 result'에서 무엇을 얻고있다? – dfockler

+0

Hmmm .... 행 수는 행 1의 값 수와 일치하지 않습니다. 나는 그것을 확인했습니다. 왜 내가 같은 수의 키와 값을 가지고 있는지 확신 할 수 없다. – user2232681

답변

7

, 문제는 당신의 따옴표가 변수의 외부에있는 것입니다 :

+0

나는 그것을 본다. 내팽창 치기 전에 큰 따옴표를 지우고 제안이 잘 작동해야했습니다. – user2232681

5

당신은 각각의 값이 아닌 값의 전체 목록을 인용 할 필요가있다.

나는이 Barmar 게시 방법보다 그러나이 고정/청소기 방법을 따라하기 쉬운 것 같아요 :

$newdata = "'" . implode("','", $_POST) . "'"; 
+0

Hello Barmar, 친절하게도이 작업은 꽤 자동으로 진행됩니다. 행이 많으면이 방법이 효과가 있습니까? 아니면 어떤 사이클이 필요합니까? – Robert

+0

@Robert 하나의 삽입물에 여러 개의 'VALUES'리스트를 사용하려고한다면'max_allowed_packet'을 초과하지 않도록하십시오. – Barmar

+0

안녕하세요, Barmar, 답장을 보내 주셔서 감사합니다. 음, 행은 20 개 또는 최대 30 개가 될 것입니다. 그 점은 내가 초보자라는 것입니다. 여기에 하나의 질문을 만들었습니다. https://stackoverflow.com/questions/45349503/php-mysql-insert-multimensional-associative-array-building-query-from-array-keys, 친절하게도 저를 도와 줄 수 있습니까? 고마워요. – Robert

관련 문제