2012-03-11 3 views
1

내 코드가 mysql에 레코드를 삽입하지 않습니다. 뭐가 잘못 되었 니? 나는 정말로 혼란 스럽다. 양식을 디자인했으며 텍스트 상자에서 데이터를 읽고 데이터베이스로 보내려고합니다. 당신이 거의 모든 것을 할 수 제공 한 코드와데이터베이스에 데이터를 삽입 할 때 문제가 발생합니다.

<?php 
if(isset($_post["tfname"])) 
    { 
     $id=$_post["tfid"]; 
     $name=$_post["tfname"]; 
     $family=$_post["tffamily"]; 
     $mark=$_post["tfmark"]; 
     $tel=$_post["tftell"]; 

$link=mysql_connect("localhost","root",""); 
if (!$link) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("university",$link); 
$insert="insert into student (sid,sname,sfamily,smark,stel) values ($id,'$name','$family',$mark,$tel)"; 

mysql_query($insert,$link); 
    } 
mysql_close($link); 
?> 
+0

어떤 오류가 있습니까? –

+1

PHP 변수는 대소 문자를 구별합니다. 올바른 변수가'$ _POST'이므로'$ _post'는 작동하지 않을 것입니다 (적절한 오류보고 옵션이 설정되어 있다면 이것은주의해야합니다). 또한 쿼리가 올바르게 실행되는지 확인하고 mysql_error()가 표시되지 않으면 표시/로그해야합니다. 그런데 스크립트가 작동하더라도 침입자가 데이터베이스를 약탈 할 수있는 격렬한 SQL 주입 구멍이 있습니다. –

답변

2

id, mark 및 tel의 값은 쿼리에서 인용 부호로 묶어야합니다. 또한 @Another Code가 말한 것처럼 코드에서 $ _post 대신 $ _POST를 사용해야합니다. 이 시도하고 나에게 결과를 알려 : 오류 메시지를 가져

<?php 
if(isset($_POST["tfname"])) { 
    $id=$_POST["tfid"]; 
    $name=$_POST["tfname"]; 
    $family=$_POST["tffamily"]; 
    $mark=$_POST["tfmark"]; 
    $tel=$_POST["tftell"]; 

    $link=mysql_connect("localhost","root",""); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } else { 
     mysql_select_db("university",$link); 
     $insert="insert into student 
       (sid,sname,sfamily,smark,stel) values 
       ('$id','$name','$family','$mark','$tel')"; 
     mysql_query($insert,$link) or die (mysql_error()); 
     mysql_close($link); 
    } 
} else { 
    die('tfname did not send'); 
} 
?> 

사용 mysql_query($insert,$link) or die (mysql_error());을.

+0

mohammad, 작동하지 않았습니다. – samira

+0

@sami : 당신이 얻은 오류를 알려주십시오. 쓰기가 작동하지 않는다는 것은 답이 아닙니다 ... –

+0

mysql_error()는 오류를 인쇄해야합니다. 이게 뭐야? –

0

이 - 몇 가지 검사를 할 ... 당신도 POST에서 tfname을 받고 확인을 위해 뭔가를 echo'd 있나요? 그것은 좋은 데이터베이스를 선택합니까? 필드 $ id, $ mark 및 $ tel에서도 작은 따옴표가 필요합니까? 더 많은 도움을 제공하기 위해 코드가 작동하지 않는 부분에 대해 더 알아야하지만 코드가 실행되어야하는 것처럼 보이게됩니다. 잠시 동안 에코를 사용하여 문제를 좁혀보십시오!

0

생성 된 SQL 쿼리를 SQL 쿼리 브라우저에서 실행하십시오. "echo $ insert"문으로 쿼리를 가져옵니다.

-1

변화에 $ 삽입 :

$insert="insert into student (sid,sname,sfamily,smark,stel) values ($id,'".$name."','".$family."','".$mark."','".$tel."')"; 

더 필요 ini_set('display_errors',1)는 그래서 PHP는 오류 메시지를 표시합니다 설정합니다.

마지막으로 mysql 쿼리를 수행 할 때마다 or die(mysql_error())을 쿼리에 사용하여 mysql 또는 구문에 문제가있는 경우이를 인식하도록하십시오.

$q = mysql_query($query) or die(mysql_error()); 
+0

'die'는 오류 처리에 사용되어서는 안됩니다. 왜냐하면 전체 스크립트를 종료시키기 때문입니다. 이것은 버그와 이상한 출력을 쉽게 유발할 수 있으며 라이브 환경에서는 사용자에게 스크립트 오류를 ​​직접 보여주는 것이 좋지 않습니다. 적절한 오류 처리 루틴을 작성하는 것이 중요합니다. –

+0

이 응용 프로그램이 테스트 실행으로 작동하고 오류가 해결되면 die 기능을 제거 할 수 있다는 것을 고려하여이 예제를 제공했습니다 ... – yuvrajm

+0

괜찮 았지만 그 점을 사람들이 알고 있다는 것을 알고있는 것이 좋습니다 디버깅 전용. 또한 스크립트는 항상 적절한 (데이터베이스) 오류 처리가 필요합니다. 지금 당장 작동하는 쿼리는 앞으로 작업을 중단하기로 결정할 수 있습니다. –

관련 문제