2011-08-02 8 views
0

나는 다음과 같은 스크립트를 통해 CSV 파일에 값을 삽입하려고내 스크립트에 어떤 문제가 있습니까?

<?php 
require_once '../config.php'; 
$month = $_GET['month']; 
$sq="select * from employee where month ='$month'"; 
$sql=mysql_query($sq); 

$row = array(); 
$row[] = 'Employee Code'; 
$row[] = 'Employee Name'; 
$row[] = 'DOJ'; 
$data .= join(',', $row)."\n"; // Join all values without any trailing commas 
$row = array(); // We must clear the previous values 
while($rs = mysql_fetch_object($sql)) 
{ 
$row[] = $rs->employee_code; 
$row[] = $rs->employee_name; 
$row[] = $rs->emp_dateofjoin; 
$row[] = "\n"; 
} 
$data .= join(',', $row); 

// Output the headers to download the file 
header("Content-type: application/x-msdownload"); 
header("Content-Disposition: attachment; filename=test.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
echo $data; 
?> 

값이 추가됩니다 .. ... 스크립트는 잘 작동하지만, 출력에, 값이 제대로 순서로 정렬되지 않습니다 csv 파일에서 행 시작 부분에 빈 셀이 하나 있습니다. 첫 번째 행을 제외하고

+0

귀하의 스크립트는 현재 SQL 주입 공격에 취약합니다. http://www.php.net/manual/en/mysqli.real-escape-string.php 또는 유사한 것으로'$ _GET [ 'month']'를 탈출해야합니다. –

+0

실제 csv 출력 (예 : 3-5 줄)의 몇 줄과 예상 출력을 추가 할 수 있습니다. 그렇게하면 무엇이 잘못되었는지를 알아 내고 코드를 파고 왜 잘못되었는지 말하기가 더 분명합니다. –

답변

1

스크립트를 살펴 보지 않고도 스크립트 핵심 부분은 mysql_* 기능을 사용하고 있다는 것입니다. 그러지 마라. 대신 PDO (최고) 또는 mysqli (양호)로 이동해야합니다.

그 외, ORDER BY 절을 검색어에 추가하는 것을 고려 했습니까?

+0

"mysql_"함수를 대체하는 방법에 대해 "잘 모르겠다"고 생각한다면 sunil이 좋습니다. –

+0

유의 사항 및 시정 사항. 고맙습니다. –

0

나는 또한 당신이 FIELD() DESD를 조사 할 수 있다고 생각하고, 내림차순으로 원하는 것을 정렬하는데 도움이 될 것이라고 생각한다. 그냥 생각.

SELECT * FROM employee WHERE month = '$month' AND order by field(field1,field2,field3,field4) desc 

아니면 문자를 스캔 한 다음 원하는 경우에 뭔가 표시 무엇을 설정하는 정규 표현식과 EREG()와 foreach는 내부 while 루프를 사용할 수 있습니다. 또 다른 방법은 가장 많이 채워진 요소의 정보를 낮은 값으로 정렬하는 것입니다.

+0

실제로 내 문제는 test.csv 파일에서 가져온 데이터를 정렬하는 것입니다. 데이터는 괜찮아요.하지만 문제는 CSV 파일에있는 그들의 배열입니다. – sunil

+0

오, 잘보세요 CSV 파일 데이터를 읽고 배열로 배열하는 데 사용할 수있는 PHPClass를 만들고 원하는대로 배열 된 CSV 파일을 업데이트 할 수 있습니다. – Killrawr

관련 문제