2011-10-23 2 views
0

PHP 캘린더를 만들었습니다. 이벤트를 추가 할 수 있습니다. 문제를 제외하고 지금 이벤트를 추가하면 phpmyadmin에 새 레코드가 표시됩니다 그러나 그것에 어떤 정보도 없다. 제발 도와주세요 :. P데이터가 MySQL에 나타나지 않습니다

  <html> 

<head> 

    <title> 
    Calendar - event added 
    </title> 
    <body> 
    <?php 
    $link = mysql_connect('tealdevcom.ipagemysql.com', '*******', '********'); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db(cal1); 


    $sql="INSERT INTO cal1_table (event, cal_date) 
    VALUES 
    ('$_POST[title]','$_POST[date]')"; 

    if (!mysql_query($sql,$link)) 
     { 
     die('Error: ' . mysql_error()); 
     } 
    echo "event added"; 

    mysql_close($link) 
    ?> 
    <br> 
    Go back to the <a href="http://www.development.tealdev.com">Calendar</a> 
    </body> 
    </html> 
+4

준비된 SQL 문을 연구하고 시작하거나 적어도 서버 측에서 양식 입력 데이터를 이스케이프 처리하십시오. 위의 예는 SQL 주입 공격을 받기 쉽습니다. –

+0

$ sql 변수를 echo'd하여 내용물을 확인 했습니까? – NotMe

+0

@CoryLarson - 정말입니까? 그것이 나에게 달려 드는 것처럼 보이지 않습니다. 그러나 다시 한번, 그것은 읽기가 꽤 어렵습니다. (아, 그리고 당신 말이 맞아.': P') –

답변

0

은 $ _POST [제목]와 $ _POST [날짜] 빈 아니다를 확인하기 위해 코드에 몇 가지 "의 printf"(PHP 에코 "문을 추가

을 그것은 않을 것 너무, 당신의 $ SQL 문을 에코 상처를 줬어.

을 기본적으로, 당신은 당신의 입력)

1 디버깅해야

2) SQL 쿼리

0

일반적으로 쿼리가 성공했지만 데이터가 사용자의 GUI에서 공백으로 표시되면 다음과 같이 항상 테스트 할 수 있습니다.

1) 콘솔에서 쿼리를 실행하십시오 (table1에서 colA, colB 선택) 데이터가 있는지 확인하십시오. 2) 데이터가있는 경우 쿼리를 (길이 (colA), 길이 (colB)를 선택하여) 수정하십시오. 길이가 비어 있지 않으므로 데이터에 공백 문자 또는 이진 문자가 있는지 알 수 있습니다.

병동 이후

3) db insert를 새로운 방법으로 넣으십시오.

4) 코드에 UNIT 테스트를 추가하여 메소드를 실행하고 null 또는 빈 데이터가 쿼리 삽입 매개 변수에 추가 된 경우 예외가 throw되는지 확인하십시오.

0

쿼리 문자열을 쿼리 문자열에 직접 포함시키는 대신 쿼리 매개 변수를 개별적으로 전달하는 방법을 사용하는 것이 좋습니다. 다른 곳에서 언급했듯이 이것은 너에게 열린 자리를 SQL injection attacks으로 넓혀 준다. 한 예는 PDO objects을 사용하는 것입니다.

$dbh = new PDO('mysql:host=tealdevcom.ipagemysql.com;dbname=$cal1', $user, $pass); 
$stmt = $dbh->prepare("INSERT INTO cal1_table (event, cal_date) VALUES (:title, :date)"); 
$stmt->bindParam("title", $_POST['title']); 
$stmt->bindParam("date", $_POST['date']); 
$stmt->execute(); 

나는 phpinfo()를 찾았습니다. 함수는 $ _GET/$ _ POST가 내가 생각하는 것을 포함하고 있는지 여부를 디버깅하는데 유용하다. 데이터가 올바르게 게시되지 않았을 수 있습니다.

관련 문제