2012-03-07 2 views
1

양식 제출에서 가져온 데이터를 데이터베이스에 제출하는 작업을하고 있지만 제출할 때마다 오류가없고 내 데이터가 내 데이터베이스에 표시되지 않습니다. 누구나 내가 잘못했을 수도있는 것에 대한 정보를 알려줄 수 있습니까? 내 테이블을 보려면 phpMyAdmin을 사용하고 있습니다. 는 스티븐에게, 감사PHP mySQL 코드가 데이터베이스에 게시되지 않습니까?

<?php 

$user= $_POST["txtUser"]; 
$fName= $_POST["txtFname"]; 
$lName= $_POST["txtLname"]; 
$email= $_POST["txtEmail"]; 
$date= date("r"); 



$dbh=mysql_connect('webdb.uvm.edu','swakita','MYPASSWORD'); 

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

mysql_select_db("SWAKITA", $dbh); 

if (isset($_POST['butSubmit'])) { 
mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES (" . $user . "," . $fName .  "," . $Lname . ", '4', '0', $date, $email)"); 
mysql_close(); 
print $user; 
} 
?> 

편집 이 오류가 발생합니다 : 당신은 당신의 SQL 구문에 오류가 있습니다; 여기

라인 1에서 ''근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인하는 것은 현재 내 코드입니다 :

<?php 

$user= $_POST["txtUser"]; 
$fName= $_POST["txtFname"]; 
$lName= $_POST["txtLname"]; 
$email= $_POST["txtEmail"]; 
$date= date("r"); 



$dbh=mysql_connect('webdb.uvm.edu','swakita','efaemaey'); 

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

mysql_select_db('SWAKITA', $dbh); 

if (isset($_POST['butSubmit'])) { 
mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES (' mysql_real_escape_string($user)', 'mysql_real_escape_string($fName)', 'mysql_real_escape_string($Lname)', '4', '0', 'mysql_real_escape_string($date)', 'mysql_real_escape_string($email)'"); 
if (mysql_errno()) { 
echo $sql . "<br/>\n" . mysql_error(); 
} 
mysql_close(); 
print $user; 
} 
?> 

난 후 괄호 누락 된 EDIT 편집 'mysql_real_escape_string ($ email)'하지만 이제는 값 대신에 "mysql_real_escape_string (Example First Name)"을 게시하고 있습니다. 나는 지금 괄호로 무엇을 잘못 했는가?

+0

잠시 동안 나는 당신이 당신의 비밀 번호를 숨기지 않았다는 것을 두려워했다. – Jon

+0

하하, 아니, 나는 반쯤 자고 있지만 그 일을 기억하고 있었다. – Wakeeta

+0

각 MySQL 문 다음에'mysql_error()'를 추가하면 무슨 일이 일어나는지 알 수 있습니다. – kba

답변

3

POST 요청의 필드를 쿼리에서 직접 사용하는 경우 SQL injection의 취약성이 있으므로 먼저 이스케이프 처리하십시오.

$user = mysql_real_escape_string($_POST["txtUser"]); 
... 

내가 문제가 당신이 사용자와 같은 필드 주위에 따옴표를 넣어하지 않을 것으로 생각하여 mysql_query

mysql_query(...); 
if (mysql_errno()) { 
    echo $sql . "<br/>\n" . mysql_error(); 
} 

의 결과를 확인하여 문제를 참조하십시오. 큰 따옴표로 문자열을 인용하는 경우 문자열 내에서 $ 변수를 사용할 수 있습니다, "

VALUES('$user', '$fName', ... 

하고 평가받을 것이다 :

VALUES ('" . $user . "', '" . $fName . "', ... 

또는 간단 :

VALUES (" . $user . "," . $fName . ", ... 

이 있어야한다 , 작은 따옴표로 구분 된 문자열을 사용하면 말 그대로 $ 변수가 출력됩니다.

+0

도움을 주셔서 대단히 감사드립니다. 이제부터는 완전히 탈출 할 것입니다. – Wakeeta

+0

입니다. mysql_real_escape_string()이 시도하고 작동하지 않습니다. –

+0

@ KaiQing, 고침, 고정. – stivlo

1
mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES ('" . mysql_real_escape_string($user) . "','" . mysql_real_escape_string($fName) .  "','" . mysql_real_escape_string($Lname) . "', '4', '0', '".mysql_real_escape_string($date)."', '".mysql_real_escape_string($email')."'"); 

문자열을 '작은 따옴표로 묶어야합니다. 제대로 탈출하거나 해킹 당하십시오. mysql_real_escape_string() 도움이 될 것입니다.

+0

대단히 감사합니다. 이제부터는 이스케이프를 사용하기 시작할 것이고, 저는 PHP/MySQL에 익숙하지 않습니다. – Wakeeta

관련 문제