2011-01-17 6 views
1

양식의 값을 삽입하여 MySQL 데이터베이스에 삽입하려고합니다. 하지만 작동하지 않습니다. 저는 초보자입니다. 제발 도와주세요. 여기 MySQL 데이터베이스에 삽입 할 쿼리를 삽입 할 수 없습니다. (PHP)

내 코드입니다 :

<?php 

function register(){ 

    $name = $_POST['name']; 
    $address = $_POST['address']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
//echo $name; 

$con = mysqli_connect("localhost", "root", "", "LinuxCreditSociety"); 
$rs = $con->query("insert into cust_mst (customer_id,customer_name,customer_address,customer_mobile,email_id)values(1003,'$name','$address','$phone','$email')"); 
$rs->free(); 
$con->close(); 
} 

?> 


<html> 
    <head> 
     <title>Registration</title> 
    <link rel="stylesheet" type="text/css" href="phpcss.css"></link> 
    </head> 
    <body> 
     <div style="position:absolute;left:300px;top:5px"> 
      <h1 align="center"><font face="Purisa" size="20" color="purple">Linux Credit Society</font></h1> 
     </div> 
     <div style="position:absolute;right:160px;top:5px"><img src="linux.jpg" height="150" /></div> 
     <div style="position:absolute;left:140px;top:5px"><img src="linux.jpg" height="150" /></div> 


    <form method="post"> 
     <div class="st1"> 
     Name:</br></br> 
     Address:</br></br> 
     Email-id:</br></br> 
     Phone#:</br></br> 
     </div> 
     <div class="st2"> 
      <div style="position:absolute;top:5px"> 
       <input type="text" name="name"> 
      </div> 
      <div style="position:absolute;top:78px"> 
       <input type="text" name="address"> 
      </div> 
      <div style="position:absolute;top:148px"> 
       <input type="text" name="email"> 
      </div> 
      <div style="position:absolute;top:218px"> 
       <input type="text" name="phone"> 
      </div> 
      <div style="position:absolute;top:290px;"> 
      <input type="submit" value="Register"> 
      </div> 
     </div> 
    </form> 
      <div style="position:absolute;top:320px;"> 
        <?php 
          if(isset($_POST['submit']) && $_POST['submit'] == "Register") 
           register(); 
        ?> 
      </div> 
    </body> 
</html> 

그리고 이것이 내가 내 데이터베이스를 만든 방법입니다

create database LinuxCreditSociety; 

use LinuxCreditSociety; 

create table cust_mst(
customer_id int, 
customer_name varchar(50), 
customer_address varchar(70), 
customer_mobile double, 
email_id varchar(50)); 

insert into cust_mst values(1001, 'Jack Mathew', 'Bandra', '9998887770', '[email protected]'); 

insert into cust_mst values(1002, 'Jill Roberts', 'Dadar', '999665550', '[email protected]'); 

편집 : 나는 단지 하나의 변화를 만들어

얘들 아

및 그것은 고맙습니다. 지금 나는 또한 주사에 맞붙을 것입니다 !! 여기

내가 무슨 짓을 :

난 그냥에서 전화를 변경 -이에>

<?php 
         if(isset($_POST['submit']) && $_POST['submit'] == "Register") 
          register(); 
       ?> 

->

<?php 
           if(isset($_POST['name']) && $_POST['name'] != "") 
            register(); 
         ?> 
+1

제발 ** 작동하지 않는 것 ** – ajreal

+0

"작동하지 않습니다"보다 구체적 일 수 있습니까? – Matt

+0

특정 오류 메시지가 나타 납니까? –

답변

5

은 분명히이에게 다른 방법으로 주위를 원하는 :

$_POST[name] = $name; 
$_POST[address] = $address; 
$_POST[email] = $email; 
$_POST[phone] = $phone; 

예 :

$name = $_POST['name']; 
$address = $_POST['address']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
+0

을 확인하십시오. 그리고 $ _POST [ 'name']'은 $ _POST [name]보다 훨씬 더 의미가 있습니다. –

+0

죄송합니다 나는 그것을 바꿨다. 그것은 내 실수였다. 그러나 그것은 효과가 없다. – Pavitar

+0

내 어리석은 실수를 지적 해 주셔서 감사합니다. – Pavitar

5

나는 데이터가 $_POST에서 오는 가정합니다. SQL injections을 방지하기 위해

$name = $con->real_escape_string($_POST['name']); 
$address = $con->real_escape_string($_POST['address']); 
$email = $con->real_escape_string($_POST['email']); 
$phone = $con->real_escape_string($_POST['phone']); 

참고 속으로

$_POST[name] = $name; 
$_POST[address] = $address; 
$_POST[email] = $email; 
$_POST[phone] = $phone; 

mysqli_real_escape_string()의 사용을 변경합니다. 또한 이미 mysqli 확장자를 사용 중이므로 쿼리 문자열에 변수를 삽입하는 대신 prepared statements을 작성하는 것이 좋습니다.

마지막 메모 : "정의되지 않은 상수 이름 사용 -/your/script에서 'name'을 (를) 사용하는 것과 같은 오류 알림을 방지하려면 문자열을 사용하여 배열 키에 액세스하십시오 ($_POST[name] 대신 $_POST['name']).

+0

작동하지 않습니다. 그 질문을 읽으 려구? –

+0

준비된 진술을 직접 사용해 본 적이 있습니까? –

+0

"올바르게"질문에 대답하는 것이 신경 쓰이는가? –

-1
function register(){ 

    $name  = $_POST['name']; 
    $address = $_POST['address']; 
    $phone  = $_POST['email']; 
    $email  = $_POST['phone']; 

    $con = mysqli_connect("localhost", "root", "", "LinuxCreditSociety"); 
    $rs = $con->query("insert into cust_mst (customer_id,customer_name,customer_address,customer_mobile,email_id)values(NULL,'{$name}','{$address}','{$phone}','{$email}')"); 
    $rs->free(); 
    $con->close(); 
}
+0

> 아직 작동하지 않습니다. 왜 {}을 사용했는지 설명해주십시오. – Pavitar

0

시도해보세요. 변수를 삭제하는 것을 잊지 마세요.

function register(){ 

    $name  = $_POST['name']; 
    $address = $_POST['address']; 
    $phone  = $_POST['email']; 
    $email  = $_POST['phone']; 

    $con = new mysqli("localhost", "root", "", "LinuxCreditSociety"); 

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

    if (!$con->query("insert into cust_mst (customer_id,customer_name,customer_address,customer_mobile,email_id)values(NULL,'$name','$address','$phone','$email')")) { 
     printf("Errormessage: %s\n", $con->error); 
    } 

    $con->close(); 
} 
+0

디버깅 결과를 출력하는 것이 좋습니다. – nfo

+0

좋은 생각이었습니다. +1 – Pavitar

+0

@Pavitar 모든 사람들에게 오류를 노출시키는 끔찍한 생각. 대신 trigger_error()를 사용해야합니다. –

관련 문제