2014-04-25 3 views
0

아래 코드에서 수동으로 수행하는 대신 SQL 쿼리에 삽입 할 수있는 배열을 만들려고합니다.PHP를 사용하여 for 루프에서 for 루프로 변수를 만들고 삽입하십시오.

이 문제는 PDO를 사용하지 않고 간단한 PHP로 가능합니다.이 문제를 해결할 수있는 일종의 트릭입니다.

수동으로 열 10 개와 10 개를 삽입 한 것을 볼 수 있습니다. 단축 할 수 있습니까? 그래서, I는 [1] -a [10]로 구성된다 변수/PT1-pt10으로부터의 선두를 구성 할 다른 배열을 원한다.

for($j=1;$j<11;$j++) { 
    $a[$j] = ""; 
} 

<?php 
$host = 'localhost'; 
$user = 'root'; 
$pass = ''; 
$db = 'my_db'; 
$table = 'jos_answers'; 

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error()); 
mysql_select_db($db) or die("Can not connect."); 

$result = mysql_query("INSERT into ".$table."(id, title, pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, pt9, pt10) VALUES ((select id from jos_content where title='$title'),'$title','$a[1]','$a[2]','$a[3]','$a[4]','$a[5]','$a[6]','$a[7]','$a[8]','$a[9]','$a[10]')"); 

?> 
+0

단지 머리 위로, 당신은 아마 "는 mysql_query"그되지 않는를 사용하려는 해달라고. 여기 참조 : http://us3.php.net/mysql_query – Meow

답변

0
for($j=1;$j<11;$j++) { 
    $a["pt".$j] = $j; 
} 


"INSERT into ".$table. "(id, title,".implode(",", array_keys(a)).") VALUES ((select id from jos_content where title='$title'),'$title',".implode(",", array_values(a)).")"; 
+0

약간의 댓글이 해가되지 것 ... 첫 번째 부분은 단지 키 => 값의 배열을 설정하는 것입니다 @nKn – nKn

+0

. PHP implode 함수는 배열 키/값을 사용자가 제공하는 "glue"(이 경우 ",")로 붙입니다. 내가 생각 하기엔 꽤 분명하다. – Meow

0

이 시도 :

$insert = "INSERT INTO" . $table . "(id, title,"; 
$value = " VALUES((select id from jos_content where title='$title'),'$title',"; 
for($x = 1; $x < 11; $x++){ 
    $insert .= " pt" . $x . ","; 
    $value .= " '$a[" . $x . "]'," //this line is iffy.... 
} 
$insert = substr($insert, 0, -1);//to remove last comma 
$value = substr($value, 0, -1);//to remove last comma 
$insert .= ")";//final paren 
$value .= ")";//final paren 
$sql = $insert . $value; //combine parts 
$result = mysql_query($sql); 

내가 그 선이 불확실하다고 생각하는 이유는이 ''는 varibles을 surronding하는 것은 좀 나를 혼란 becuase이다. varibles 값을 DB에 삽입 하시겠습니까? 당신이 '원하는 경우

$values .= " " . $a[$x] . ","; 

이 값이 갈 : 그래서 대신 선으로 갈 것입니다 경우

다음
$values .= " '" . $a[$x] . "',"; 

코드의 작업 예제가 있기 때문에 분명히 약간의 편집 당신의 SQL 환경에없는 당신은 우리에게 모든 변수 값을 제공하지 않았다 http://viper-7.com/cDAcRl

행운을!

관련 문제