2014-02-14 5 views
0

MySQL에 문제가 있습니다. mysqli와 함께 PHP를 사용하여 준비된 테이블에 데이터를 쓴다. 그러나 양식을 제출하면 테이블에 값을 써야하며 각 값은 테이블에 새로운 행을 만듭니다. 여기 내 코드입니다 :모든 값에 대해 새 행을 만듭니다.

session_start(); 
$_SESSION["Field"]=array("Name1","Name2","Name3",...); 
if(!empty($_POST)){ 
foreach($_SESSION["Field"] as $Variable){ 
if(!empty($_POST[$Variable])){ 
$_SESSION[$Variable]=$_POST[$Variable]; 
}}} 
if(array_key_exists("Database",$Collection)){ 
$Database=mysqli_connect("localhost","dbadmin","password","mydatabase"); 
mysqli_query($Database,"insert into Table1 (PHPSESSID) values ('".session_id()."')"); 
foreach($_SESSION["Field"] as $Variable){ 
if(!empty($_POST[$Variable])){ 
$_SESSION[$Variable]=mysqli_real_escape_string($Database,$_SESSION[$Variable]); 
mysqli_query($Database,"insert into Table1 ($Variable) values ('{$_SESSION[$Variable]}')"); 
}} 
mysqli_close($Database); 
} 

업데이트 : (?)는 생각의 문제가 있음을, 모든 변수가 하나 개 mysqli 작업에 있어야하기 때문이다. 그러나 나는 그것에 대해 아무것도 찾지 못했습니다. 내가 맞습니까? 이게 뭐야? mysqli_query($Database,"insert into Table1 (Variable1,Variable2,Variable3) values ('Value1','Value2','Value3')");?

업데이트 2 : 제가 삽입 작업을 커밋하지 않아도 발생할 수 있다고 생각하지만 커밋 할 필요가 없으므로 생각하지 않습니다. 문제입니다. 하지만 저는 MySQL과 SQL의 초보자입니다. 그래서 나는 틀 렸습니다.

두 가지 모두 내 문제의 해결책으로 보이지만 배열의 변수를 사용하여 foreach 루프에서 만드는 방법은 잘 모르겠습니다. 누구든지 나를 도울 수 있습니까?

답변

1

사용을 시도하기 전에 foreachINSERT을 이해해야한다고 생각합니다. foreach 루프를 사용하여 데이터베이스에 커밋하지 말고 SQL 쿼리 문자열을 작성하십시오. 루프가 끝나면 실행할 수있는 완전한 SQL 쿼리를 갖게됩니다.

편집 : 의무적 인 잊지 "데이터베이스에 삽입하기 전에 값을 이스케이프하는 것을 잊지 마세요!"

편집 2 : 여기에 하나의 답변이 있습니다. 확실히 우아하지 않고 테스트되지는 않았지만 일을 할 수있었습니다.

session_start(); 
if(empty($_POST) || !array_key_exists("Database", $Collection)){ 
    exit; 
} 
$checklist = array("Name1", "Name2", "Name3"); 
$query = "INSERT INTO Table1 SET "; 
$db = mysqli_connect("localhost", "dbadmin", "password", "mydatabase"); 

foreach($checklist as $v){ 
    if(!empty($_POST[$v])){ 
     $_SESSION[$v] = $_POST[$v]; 
     $_POST[$v] = mysqli_real_escape_string($db, $_POST[$v]); 
     $query .= "$v='$_POST[$v]'," 
    } 
} 

$query .= "PHPSESSID='" . session_id() . "'"; 

mysqli_query($db, $query); 
mysqli_close($db); 
+0

저는 초급자이고 대답의 첫 부분을 전혀 이해하지 못합니다. 두 개의 foreach 루프는 내 코드에서 다른 위치에 있으므로 함께있을 수 없습니다. 편집에서 mysqli_real_escape_string을 의미하는 것이 맞다면 여기에 쓰는 것을 잊었습니다. – aleskva

+0

문제가있는 작은 조언을 추가 할 수 있습니까? 아니면 작은 코드 예제? – aleskva

+0

실행 가능한 것으로 보입니다. 나는 그것을 시도 할 것이고 결과에 대해보고 할 것이다 ;-) – aleskva

관련 문제