2012-03-31 3 views
0

MySQL과 PHP에 문제가 있습니다.PHP 폼에서 데이터베이스 삽입을 수행하는 방법

$user = $_REQUEST["user"]; 
$password = $_REQUEST["pass"]; 

// Make a MySQL Connection 
mysql_connect("localhost", "root", "root") or die(mysql_error()); 
mysql_select_db("database") or die(mysql_error()); 

// Insert a row of information into the table "example" 
mysql_query("INSERT INTO accounts('user', 'password') 
VALUES($user, $password)") 
or die(mysql_error()); 

echo "Data Inserted!"; 
+1

항상 데이터 때를 필터링 ('암호'근처 ''사용자 '를 사용) 데이터를 받고 있지 않습니다 당신은 데이터베이스 쿼리에서 사용할거야. [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection)을 참조하십시오. – safarov

+2

당신은'$ _REQUEST' 대신에'$ _POST'를 사용해야하고 당신의 코드는 SQL 주입에 취약합니다. 그리고 마지막으로 ** 암호를 일반 텍스트로 저장해서는 안됩니다 **. 나는 너무 많이 강조 할 수 없다. – kba

+0

데이터가 지금 삽입되지 않습니다. 이유가 무엇입니까? – user1305371

답변

3

당신은 필드 이름을 탈출해야합니다 이건 내 PHP 코드를

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''user', 'password') VALUES(,)' at line 1

입니다 : 내가 PHP에서 사용자를 만들고 데이터베이스에 추가 할 때

나는 오류를 얻을 back-ticks (또는 nothing)로 single-quotes을 사용하지 마시고, 작은 따옴표로 둘러싸 기십시오 :

mysql_query("INSERT INTO accounts(`user`, `password`) 
VALUES('$user', '$password')") 
or die(mysql_error()); 
0

값을 동봉해야합니다. 나는이 값을 삽입하는 쿼리로 사용할 것이다. 희망이 도움이됩니다.

mysql_query("INSERT INTO accounts(user, password) VALUES('$user', '$password')") 
+0

이것이 작동하는 것처럼 보였지만 데이터가 데이터베이스에 추가되지 않았습니다. – user1305371

+0

변수를 확인하여 실제로 삽입하려는 내용을 확인하십시오. print_r ($ _REQUEST)을 사용할 수 있습니다. 또한 데이터베이스 쿼리 문에서 이러한 변수를 직접 사용하는 것처럼주의하십시오. 성명서 작성을 위해 데이터 위생을 확인하고 PDO (PHP Data Object)를 사용하십시오. –

1

오류 메시지에서 $ user와 $ pass는 모두 비어 있습니다. echo 문을 사용하여 검증하십시오.

-1

당신은 값

을 인용 할 필요도
mysql_query("INSERT INTO accounts('user', 'password') VALUES('$user', '$password')"); 

당신은 VALUES (,)가)

$user  = $_REQUEST["user"]; 
$password = $_REQUEST["pass"]; 
관련 문제