2012-08-02 2 views
4

PHP를 사용하여 mysql 데이터베이스에 값을 삽입하는 데 매우 이상한 문제가 발생했습니다. 따라서 간단한 삽입 작업 중 가장 간단한 테스트가 실행되었습니다. 다음 나던 작업 :데이터가 '따옴표'의 차이로 인해 mysql 데이터베이스에 삽입되지 않음

<?php 
include("config.php"); // put the *FULL* path to the file. 

mysql_query("INSERT INTO 'lms'.'test2' ('trn') VALUES ('17')"); 

?> 
그러나

다음 작품 : (작은 따옴표의 차이를 참고)

<?php 
include("config.php"); // put the *FULL* path to the file. 

mysql_query("INSERT INTO `lms`.`test2` (`trn`) VALUES ('17')"); 

?> 

은 정말 문제가 내가 합계의 지원을받을 수

을하시기 바랍니다 무엇인지 볼 수 없습니다
+3

MySQL을 당신이 테이블을 둘러싸고''사용할 수 없습니다 및 열 이름. 올바른 문자는'\''입니다. 반면에 문자열의 경우 올바른 것은'''입니다. – Adi

+0

mysql_은 더 이상 사용되지 않습니다. 대신 MySQLi 또는 PDO를 사용하십시오. 이 주제에 대해 작성한 게시물은 http://anuary.com/54/input-sanitization-and-escaping-for-database-and-stdout-using-php입니다. – Gajus

답변

3

공백이 있거나 예약어 인 경우를 제외하고는 쿼리 내에 테이블을 캡슐화하지 않아도됩니다. 열 조원이 번호를 받아

INSERT INTO 'lms'.'test2' ('trn') VALUES ('17') 
// This makes no real sense to the db. It should be: 
INSERT INTO lms.test2 (trn) VALUES ('17') 

경우, 정말해야합니다 :

INSERT INTO lms.test2 (trn) VALUES (17) 

MySQL을, 당신은 문자열을 이름을 캡슐화 기울어 인용 문자를 사용하지만 수 없습니다. 쿼리에 문자열을 입력하려면 '과 같은 보통 따옴표를 사용해야합니다. 이것에

당신은 할 수 있습니다

select `someTable`.`someColumn` from `someTable` 

하지만이 :

select someTable.someColumn from someTable where myName=`Tommy`; 

올바른 사용은 다음과 같습니다

select someTable.someColumn from someTable where myName='Tommy'; 
+1

에는 놓친 두 개의 백틱이 추가되었습니다. –

+0

@ypercube 고마워, 지금 매우 술취한 친구, 그래서 모든 backticks, 작은 따옴표 및 공백이 동일하게 보이고 있습니다 :) – Fluffeh

관련 문제