2013-03-21 3 views
0

나는 이것을 알아 내기 위해 이틀 동안 노력해왔다. 튜토리얼에서 축 어적으로 복사했는데 여전히 데이터를 테이블에 삽입 할 수 없습니다. 여기에 양식 내 코드는PHP를 사용하여 mysql에 데이터를 삽입 할 수 없다

<font face="Verdana" size="2"> 
<form method="post" action="Manage_cust.php" > 
Customer Name 
<font face="Verdana"> 
<input type="text" name="Company" size="50"></font> 
<br> 
Customer Type 
<font face="Verdana"> 
<select name="custType" size="1"> 
    <option>Non-Contract</option> 
    <option>Contract</option> 
</select></font> 
<br> 
Contract Hours 
<font face="Verdana"> 
<input type="text" name="contractHours" value="0"></font> 
<br> 
<font face="Verdana"> 
<input type="submit" name="dothis" value="Add Customer"></font> 
</form> 
</font> 
<font face="Verdana" size="2"> 

<?php 
    if (isset($_POST['dothis'])) { 

    $con = mysql_connect ("localhost","root","password"); 
    if (!$con){ 
    die ("Cannot Connect: " . mysql_error()); 
    } 

    mysql_select_db("averyit_net",$con); 

    $sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours) VALUES 
    ('$_POST[Company]','$_POST[custType]','$_POST[contractHours]')"; 

    mysql_query($sql, $con); 

    print_r($sql); 


    mysql_close($con); 
    } 
?> 

이 내 phpMyAdmin에 서버 정보입니다 :

서버 : MySQL의 소프트웨어 버전 : TCP/IP 소프트웨어를 통해 127.0.0.1 5.5.27 - MySQL의 커뮤니티 서버 (GPL) 프로토콜 버전 : 10 사용자 : 루트 @ localhost를 서버 문자셋 : UTF-8 유니 코드 (UTF8)

는 왜 늘 일을 가르쳐주세요. 사이트를 실행하면 정보가 저장되고 제출 버튼을 누르면 사라지지만 테이블에는 들어 가지 않습니다. 표시되는 오류 메시지가 없습니다. HELP

+2

시도는 내가이 튜토리얼에서 불과 예를 들어 것을 알고 제외 – nvl

+1

을 추적 할 수 있도록 쿼리 코드 내부의 시도 - 캐치를 배치하지만, 알고하시기 바랍니다 $ _POST에서 직접 데이터를 가져 와서 SQL 쿼리에 넣는 것은 매우 위험합니다. 실제 사용자가이를 악용하여 데이터베이스를 읽거나 변경하거나 삭제하는 것은 쉽지 않습니다.배우는 것은 괜찮지 만 공개적으로 열려있는 모든 응용 프로그램에서는 절대로하지 마십시오. –

+1

@NovalAgungPrayogo이 코드에는 Exception을 throw 할 수있는 것이 없습니다. – Tchoupi

답변

0

SQL 문에서 조금 개선되어 배열에 저장되었습니다. 게시물 데이터가 실제로 설정되었는지 확인해야합니다. 그렇지 않으면 null 값이 반환됩니다. 귀하의 의견을 항상 소독하십시오.

if (isset($_POST['dothis'])) { 

그것을 : 때문에이 라인의 모든

<?php 

if (isset($_POST['dothis'])) 
{ 

$con = mysql_connect ("localhost","root","password"); 
    if (!$con) 
    { 
     die ("Cannot Connect: " . mysql_error()); 
    } 

mysql_select_db("averyit_net",$con); 

$company = isset($_POST['Company'])?$_POST['Company']:NULL; 
$custype = isset($_POST['custType'])?$_POST['custType']:NULL; 
$hours = isset($_POST['contractHours'])?$_POST['contractHours']:NULL; 

$sql = "INSERT INTO cust_profile(Customer_Name, 
           Customer_Type, 
           Contract_Hours) 
     VALUES('$company', 
       '$custype', 
       '$hours') 
     "; 

     mysql_query($sql, $con); 

     mysql_close($con); 
} 
?> 
+0

OP 변경 내용과 이유에 대해 설명하고 SQL 주입 취약점을 해결하십시오. –

+0

나는 당신의 코드를 시도했지만 여전히 아무것도하지 않았다. 임마가 여기에있다. 어떻게하면 mysql에 연결되어 있는지 확인할 수 있습니까? – user2193312

+0

SQL 문을 var_dump하려고 ... var_dump ($ sql); SQL 문 다음에 넣으세요. 뭐라고 써 있죠? – mmr

0

첫째, font 태그를 사용하지 않는 ... 둘째 ever

: 당신의 Manage_cust.php에

HTML과 PHP가 하나의 스크립트로 결합 된 것처럼 보입니까? 귀하의 게시물을 확인

$con = mysql_connect("localhost","root","password") or die("I died, sorry." . mysql_error()); 

을 :

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" > 

게다가, 한 줄에 나쁜 연결을 죽일 수있는 경우에, 당신은이 같은 폼에 동작을 변경해야합니다 isset() 다음 변수에 값을 할당하십시오. 원래 mysql PHP API를 사용하여 또한 ternary operators

var $company; 
if(isset($_POST['Company']) { 
    $company = $_POST['Company']; 
} else { 
    $company = null; 
} 
//so on and so forth for the other fields 

또는 사용은 일반적으로 나쁜 선택이 될 것입니다. 그것도 그래서 그 변환 할 수 mysqli 또는 PDO로 이동합니다 PHP manual for the API

항상

더 나은에서 언급 한 것이 잘못된 경우

//your connection 
$conn = mysqli_connect("localhost","username","password","averyit_net"); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 


$sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours) 
     VALUES ($company,$custType,$contractHours)"; 
      // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
      // Assuming you set these 

$stmt = mysqli_prepare($conn, $sql); 
$stmt->execute(); 
$stmt->close(); 

누군가 말해, 그래서 그것을 수정할 수 있습니다. 나는 한동안 mysqli을 사용하지 않았다.

+0

이번에는 뭔가 다른 걸 가지고 있습니다. 브라우저가 제출 버튼을 누르면 웹 페이지에 연결할 수 없다고 말했습니다. – user2193312

+0

아마도 500 오류가 발생했을 것입니다. – SomeShinyObject

+0

나는 mysqli를 코딩하려했지만 나의 메모장 ++는 파란색으로 강조 표시하지 않았다. XAMPP와 메모장 ++을 다운로드하기 때문에 최신 버전입니다. – user2193312

0

변경이에 $의 SQL :

$sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours) VALUES ('".$_POST[Company]."','".$_POST[custType]."','".$_POST[contractHours]."') 
관련 문제