BLOG ARTICLE PHP5 | 2 ARTICLE FOUND

  1. 2007.06.14 PHP에서 폼데이타 넘겨주기
  2. 2007.06.05 php5, mysql5.0 설치

+ PHP5

조금만 있으면 방학인데
'Database 설계' 과목의 과제가 떡하니 가로막고 있다.
오늘 간만에 학교에 일찍 나와서 과제 좀 해볼려고 했는데 문제도 참 여러가지다.
아는 게 없으니 몸이 고생이다.

Database table에 INSERT할 데이터를 'form'에 입력하고 'submit'을 했는데 데이터가 다음 페이지로 넘어가지 않는다.
$query = "INSERT INTO book (title, isbn, author, stock, price, pubdate) VALUES ('$title', '$isbn', '$author', $stock, $price, '$pubdate')";

$title, $isbn .... 모두 값이 비어 있으니 당연히 위의 SQL문도 에러가 난다.
소스코드가 복잡한 것도 아닌데 아무리 쳐다 봐도 잘못된 곳이 없다.
................
왜 이러지 하면서 2시간을 흘려 보냈다.
아침 일찍 학교 온 보람도 없고 서서히 열이 받는다. >.<

원인은 아주 사소한 곳에 있었다.

php.ini 파일을 수정해 주어야 한다. 어이쿠 ㅡㅡ;

register_globals = Off

요놈이 문제였다. get/post방식의 헛점을 이용해서 장난치는 사람들 때문에 막아 놓은 듯하다.

OffOn 으로 바꾸면 form의 데이터가 잘 넘어간다.


* 조금 더 찾아보니....

그렇다면 register_globals = off 일 때
어떻게 변수를 넘겨줄 수 있을까.

$_GET['변수명'] 또는 $_POST['변수명'] 처럼 사용하면 된다.
이 것들은 '$변수명'과는 다른 변수이다.



AND

+ 설치환경 : MS Windows XP

-서론-
간만에 APM을 사용할 일이 생겨서 '최신버전'을 가지고 옛날에 했던 기억데로 했는데 영~ 아니다. 버전이 그냥 있는게 아니였던 것이다. 뭔가 바뀌긴 바뀌는 모양이다.

-본론-
php5를 아무 생각없이 클릭, 클릭, 클릭해서 설치를 끝내고

$conn = mysql_connect('localhost', 'root', 'xxxxx');
echo $conn;

어라? 화면에 아무것도 나타나지 않았다. 원인은
1. 이 함수 자체가 실행되지 않았다.
2. 에러를 브라우저로 보여주지 않도록 설정되어 있다.

http://www.php.net/manual/kr/faq.databases.php
이 곳에 가보면 이유를 알 수 있다.

하지만 다 필요없고 설치할 때


Extensions 및에 Mysql을 체크하면 된다.

그리고 php5부터는 php 코드 실행 중에 에러가 나더라도 에러 위치와 내용을 안보여 주도록 되어 있다. 즉, 아무것도 안나타난다.
php.ini 파일의 360번 째줄 보면
display_errors = Off
이라고 되어 있는데 On으로 수정하면 브라우저로 에러를 확인할 수 있다.
바로 윗부분의 주석을 대충 읽어 보면
에러 정보로부터 요긴한 정보를 얻을 수 있으니까 Off으로 설정하고 그 대신 error log를 사용하라고 한다.

이제 다시 아래 코드를 실행시켜보자.

$conn = mysql_connect('localhost', 'root', 'xxxxx');
echo $conn;

Resource id #2
라고 나타나면 제대로 동작하는 것이다.

-결론-
설치가 정말 간편해 졌다.^_________^

AND