mysqli_fetch_array
배열 형태로 질의의 결과값을 가져오는 함수이다
한 줄의 데이터만 가져올 수 있다
첫번째 데에터만 가져온다
또다른 특징
같은 sql문을 질의하여 여러번의 결과값을 가져오는 경우 다음 행의 데이터를 가져온다
첫번째 mysqli_fetch_array -> 첫번째 데이터 가져옴
두번째 mysqli_fetch_array 치면 -> 두번째 데이터를 가져옴
mysqli_fetch_array가 배열형태로 가져오니까 한번에 여러줄을 가져올 수는 없다
$strSQL="select * from board";
$rs=mysqli_query($conn,$strSQL);
$rs_arr=mysqli_fetch_array($rs);
그렇다면 어떻게 해야할까?
반복문을 작성해주면 된다.
while($rs_arr=mysqli_fetch_array($rs)) {
$b_num=$rs_arr["strNumber"];
$b_sub=$rs_arr["strSubject"];
$b_name=$rs_arr["strName"];
$b_date=$rs_arr["writeDate"];
$b_no=$rs_arr["viewCount"];
?>
<tr>
<td width="7%"><font size="2"> <?= $b_num;?></font></td>
<td width="41%"><font size="3"><a href="board_view.php?num=<?=$b_num;?>"><?= $b_sub;?></a></font></td>
<td width="15%"><font size="3"><?= $b_name;?></font></td>
<td width="30%"><font size="1"><?= $b_date;?></font></td>
<td width="7%"><font size="2"><?= $b_no;?></font></td>
</tr>
<?php } ?>
</table>
<br/>
반복해서 질의 할 수 있도록 위처럼 작성한다.
$rs_num=mysqli_num_rows($rs);
행의 갯수를 가져오는 함수
sql문을 입력했을 때 결과의 행의 갯수를 알려준다
php.ini에 들어가서 198번째 줄 on을 바꿔주면 <?php echo ?> 이렇게 쓰던 것을 <?= ?>이렇게 써줄 수 있게 된다.
<td width="7%"><font size="2"> <?= $b_num;?></font></td>
<td width="41%"><font size="3"> <?= $b_sub;?></font></td>
<td width="15%"><font size="3"><?= $b_name;?></font></td>
<td width="30%"><font size="1"><?= $b_date;?></font></td>
<td width="7%"><font size="2"><?= $b_no;?></font></td>
내용이 기니까 저 기능을 켜주면 작성이 편해진다
조회수 출력하는 코드
내용 출력하는 코드
input할 때 버튼과 서브밋 차이는
버튼으로 해야 아무것도 입력안 했을 때는 어떻게 동작할 지 결정할 수 있다
만약 submit으로 했다면 비밀번호를 입력하지 않았을 때도 그냥 제출한다
<form name="wform" action="board_write_ok.php" method="POST" enctype="multipart/form-data">
파일 첨부를 할 때는 enctype을 결정해줘야 한다
$_FILES['userfile']['type']
파일을 첨부할 때 쓰는 슈퍼글로벌변수이다
att_file은 form이 있는 php파일에서 name을 설정한 값이다
$f_error=$_FILES["att_file"]["error"];
//file 오류코드
// 0: 성공
// 1: php.ini에서 설정한 파일 최대 크기 보다 큰 경우 error
//2: html에서 설정한 파일 최대 크기보다 큰 경우 error
//3: file some of part error 일부분만 전송되어 error
//4: file can not send -> 첨부파일이 없는 경우
//6: 임시 folder 없음 파일이 전송되는 도중 저장되는 위치나 폴더가 없어졌을 때
//7: 저장장치에 파일 쓰기를 실패하는 경우
//8: 확장이나 추가설정에 의해 파일 업로드 중지
0,4를 제외하고 전부 error
파일이 0일때는 성공인데 만약 사이즈가 비어있다면 0으로 채워라 (오류가 날 경우를 방지하기 위해)
$f_rs=move_upload_file은 php에서 제공하는 파일을 업로드하는 코드
파일의 임시 이름과 지정된 저장경로를 저장해라
if($f_error == 0){
$f_name=$_FILES["att_file"]["name"];
$f_path="upload/".$f_name;
$f_tmp=$_FILES["att_file"]["tmp_name"];
$f_size=$_FILES["att_file"]["size"];
0-> 파일 업로드 성공
파일 이름,경로,임시파일,사이즈를 정의
$f_name_only1=substr($f_name,0,strrpos($f_name,'.'));
f_name을 0을 기준으로 substr(자른다)
strrpos는 .을 기준으로
ex. text.txt
text만 저장
$f_name_ext=substr($f_name,strrpos($f_name,'.'));
6글자 이후부터 자른다는 의미
ex .txt만 저장
점부터 txt까지
for($i=1; is_file($f_path); $i++){
해당 경로에 파일이 있는지 없는지 확인
해당 경로에 파일이 있으면 실행하겠다
없으면 실행하지 않겠다
is_file($f_path)
-> 조건문
실행할 때마다 i에 1씩 증가하겠다.
//같은 이름의 파일이 있을 경우 이름 뒤에 숫자 붙이는 코드
$f_name_only1=substr($f_name,0,strrpos($f_name,'.')); //파일 이름 중 확장자를 제외한 이름만 저장
$f_name_ext=substr($f_name,strrpos($f_name,'.')); //파일 이름 중 확장자만 저장
$f_name_only2=$f_name_only1; //1에 저장된 파일 이름을 2에 저장
for($i=1; is_file($f_path); $i++){ //해당 경로에 같은 파일이 있으면 반복문 실행 -> 실행할 때마다 i변수의 숫자가 1씩 중가
$f_name_only1=$f_name_only2.$i; //파일 이름 뒤에 i변수 안에 숫자를 붙여서 변수에 저장
$f_path="./upload/".$f_name_only1.$f_name_ext; //파일 경로 재설정
}
$f_name=$f_name_only1.$f_name_ext; //바뀐 파일의 이름과 확장자를 원본 데이터에 저장
htmlspecialchars() 함수는 HTML 특수문자를 변환하여 HTML 코드로 해석되지 않게 만든다
$b_cont = htmlspecialchars($b_cont);