2015-01-28 4 views
2

등록 양식을 만들려고합니다. 성공적으로 mySQL 데이터베이스에 연결할 수 있지만 내 html 양식에서 "해커"라는 내 테이블에 아무 것도 삽입 할 수 없습니다. 여기 내 양식 및 PHP 스크립트입니다.은 mySQL 테이블에 삽입 할 수 없습니다.

또한 문제가 양식에 있는지 데이터를 수동으로 $ sql에 삽입하려고 시도했지만 $ sql이 데이터를 추가하지 않았습니다.

귀하의 도움은 많은 감사를드립니다 !!!!!!!

<?php 
include"config.php"; 

$insert = 'INSERT INTO hackers (name,email, school, grad-year) VALUES('$_POST['name']','$_POST['email']','$_POST['school']','$_POST['gradYear']')'; 


$sql= 'INSERT INTO mydatabase_name.hackers (name,email, school, grad-year) VALUES ('text', 'text', 'text', 'text')'; 

mysql_query($insert); 
mysql_query($sql); 


?> 

내 양식 :

<form method = "post" action ="process.php" > 
    <table id ="registration_form"> 
    <tr> 
     <td>name</td> 
     <td><input type= "text" name="name"/></td> 
    </tr> 
    <tr> 
     <td>email</td> 
     <td><input type= "text" name="email"/></td> 
    </tr> 
    <tr> 
     <td>school</td> 
     <td><input type= "text" name="school"/></td> 
    </tr> 
     <tr> 
     <td>graduation year</td> 
     <td><input type= "text" name="gradYear"/></td> 
    </tr> 

    <tr> 
     <td><input type= "submit" name="submit" value ="Submit"/></td> 
    </tr> 
    </table> 
</form> 
+0

오류를 찾으셨습니까? 그렇지 않다면, php.ini 파일에'display_errors = on'이 있는지 확인하십시오. 또는 config의 include 바로 뒤에'ini_set ("display_errors", 1);로 설정할 수 있습니다. 오류가있는 경우 오류가 표시됩니다. 추가 조사를 위해 여기에 게시하십시오. – KennyPowers

+0

이것은 내가 얻는 오류입니다. 정말 고맙습니다 !! 성공적으로 연결됨 경고 : mysql_query() : 16 행의 /home4/malonzoc/public_html/hackholyoke/test/process.php에 서버에 대한 링크를 설정할 수 없습니다. 경고 : mysql_query() : 사용자 ' /home4/malonzoc/public_html/hackholyoke/test/process.php 17 번 라인에서 – Nch

+0

'grad-year'에서 vjanardhan '@'localhost '(비밀번호 사용 : NO) MySQL은이를 "grad MINUS year"로 해석합니다. 아무도 그것을 놓친 것을 나는 볼 수 없다. –

답변

2

.으로 연결해야하며 바깥 부분에는 큰 따옴표를 사용하고 값 추가에는 단일 값을 사용해야합니다. 예를 들면 다음과 같습니다.

"INSERT INTO hackers (name,email, school, grad-year) VALUES('".$_POST['name']."','".$_POST['email']."','".$_POST['school']."','".$_POST['gradYear']."')" 

SQL 인젝션에 취약하기 때문에 좋은 생각이 아닙니다. 쿼리를 실행하기 전에 먼저 쿼리를 이스케이프하거나 준비하려고합니다.

수동으로 입력 한 문자열의 경우 비슷한 문제가 있습니다. 이 경우에 문자열의 바깥쪽에 큰 따옴표를 넣고 안쪽에 작은 따옴표를 붙이면 문제는이 ES ('te이 여기에 대한 쿼리 문자열 인 $sql= 'INS을 닫는 것입니다.

"INSERT INTO mydatabase_name.hackers (name,email, school, grad-year) VALUES ('text', 'text', 'text', 'text')" 
+0

감사합니다. 나는 당신의 제안을 시도했지만 여전히 효과가 없었습니다. 나는 phpMyadmin을 통해 교신 중입니다. 제가 누락 된 구성이 있다고 생각합니까? – Nch

+0

@Nach 좋아, 내 편집 작동하는지 확인하십시오. 값을 추가 할 때는 다음과 같이해야합니다 : VALUES ('someValue')', 작은 따옴표. 내가 쓴 예제에는 문자열 자체에 사용되는 곳이 없었기 때문에 제공되지 않았습니다. –

+0

@Nach 또한 Pankaj 예제가 작동 할 것이고 쿼리에서 더 깨끗해지기 때문에 다시 시작하는 방법이다 (정의 할 때 항목을 빠져 나가기를 원할 것이다). –

0

귀하의 문제는 따옴표입니다. 다음의 예는 당신에게 맞습니다.

$sql = "INSERT INTO mydatabase_name.hackers (name, email) 
            VALUES ('text', '$someVariable')"; 
1
$name = $_POST['name']; 
$school= $_POST['school']; 
$email = $_POST['email']; 
$grad_year = $_POST['gradYear']; //watch out for mysql injection here 

$insert = "INSERT INTO hackers (name,email, school, grad-year) VALUES('$name','$email','$school','$grad_year')"; 

$sql= "INSERT INTO mydatabase_name.hackers (name,email, school, grad-year) VALUES ('text', 'text', 'text', 'text')"; 

이 작동합니다. 적절한 인용문을 찾으십시오.

관련 문제