2014-06-18 2 views
0

PHP 코드와 데이터베이스에 약간의 문제가 있습니다. 페이지를 새로 고칠 때마다 새 비어있는 행이 데이터베이스에 추가 될 때도 페이지를 열 때 어떤 문제가 발생합니까?PHP - 페이지 새로 고침시 새 레코드 새로 고침

<?php 
if (isset($_POST)) { 
    $con = mysql_connect("localhost","dwarfmaster",""); 

    if (!$con) { 
     die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("my_dwarfmaster", $con); 

    $name = $_POST['name']; 
    $release_year = $_POST['release_year']; 
    $publisher = $_POST['publisher']; 
    $genre = $_POST['genre']; 

    $sql = "INSERT INTO gamelist (name, release_year, publisher, genre) 
     VALUES 
     ('$_POST[name]','$_POST[release_year]', 
     '$_POST[publisher]','$_POST[genre]')"; 

    if (!mysql_query($sql, $con)) { 
     die('Error: ' . mysql_error()); 
    } 

    echo "1 record added"; 

    mysql_close($con); 
} 
?> 
+1

if (isset($_POST)) 

을 변경하고 같은 페이지에서 양식을 말한다. 'named() '제출 버튼에 대해'isset()'를 사용하십시오. –

+3

[새 코드에서 mysql_ * 함수를 사용하지 마십시오.] (http://bit.ly/phpmsql). 더 이상 유지 관리되지 않으며 공식적으로 사용되지 않습니다 (https://wiki.php.net/rfc/mysql_deprecation). [빨간색 상자] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). ** 당신은 또한 [SQL injections] (http://www.stackoverflow.com/q/60174)을 열어 볼 수 있습니다. ** –

+0

'$ _POST'를'isset'하고'empty'하십시오. – Bora

답변

0

하거나 내가 추측 할게요

if (isset($_POST['name'])) 
0

는 다음과 같은 코드 - 추가 할 수 있습니다 (! 빈 (array_filter을 ($ _ POST)))

경우를 {. . 데이터를 의 데이터베이스에 삽입하는 코드. . }

1

요청 방법은 포스트 있는지 확인하기 위해, 사용 :

if ($_SERVER['REQUEST_METHOD'] == 'POST') 

if(isset($_POST))는 항상 true를 돌려줍니다

0
if (isset($_POST)) 

항상 true를 돌려줍니다!

는 각각의 모든 변수에 대해 각각의 시간을 확인하는 대신

if (isset($_POST['name'])&&isset($_POST['release_year']) 
      &&isset($_POST['publisher'])&&isset($_POST['genre'])) 
을 시도!

관련 문제