2015-01-04 5 views
-3

나는 그런 단순한 질문을하는 것을 유감스럽게 생각하지만, 그것은 벽에서 나를 몰아 부쳤다. 그리고 그것이 업데이트 나 다른 것 때문에 확실하지 않다. 하지만 아무도 다음 SQL 문 오류가 무엇인지 말해 줄 수 있습니까?SQL 명령 구문 오류?

$iname = mysql_query("SELECT * FROM calendarevents WHERE 'EventMonth'="January" AND 'EventDay'="1"") 
or die(mysql_error()); 
+2

모습을 .... –

+1

을 그냥 PHP를 학습하는 경우, 사용되지 않는'mysql_query' 인터페이스를 학습하지 마십시오. 그것은 끔찍한 일이며 PHP의 차후 버전에서 제거 될 것입니다. [PDO와 같은 현대적인 대체물은 배우기 어렵지 않습니다.] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/). [PHP The Right Way] (http://www.phptherightway.com/)와 같은 안내서는 베스트 프랙티스를 설명하는 데 도움을 줄 수 있습니다. 항상 절대적으로 ** 사용자 매개 변수가 [제대로 이스케이프]되어 있어야합니다 (http://bobby-tables.com/php). 또는 심각한 [SQL injection 버그] (http://bobby-tables.com/). – tadman

답변

4

이 정확한 시세 및 역 따옴표를 사용하여, 잘 작동한다는 쿼리

$iname = mysql_query("SELECT * FROM calendarevents WHERE `EventMonth`= 'January' AND `EventDay`= 1 ") 

(!) 참고 봐 가지고하시기 바랍니다해야합니다 :

를하시기 바랍니다 PDO 또는 012를 사용하는 것을 고려하십시오.대신 mysql_ * 함수가 필요합니다.

이 확장 기능은 PHP 5.5.0부터 제공되지 않을 예정이며 앞으로 삭제 될 예정입니다. 대신 MySQLi 또는 PDO_MySQL 확장을 사용해야합니다. 자세한 내용은 MySQL: choosing an API guiderelated FAQ을 참조하십시오.

2

사용하여 다음 ='January' AND EventDay ='1'") or die(mysql_error());

큰 따옴표 (")를 사용했던 방법은 제 문제의 가장 큰, 당신은 역 따옴표를 사용해야입니다

$iname = mysql_query("SELECT * FROM calendarevents WHERE EventMonth (`) 대신에 mysql의 테이블과 컬럼 이름을 이스케이프하기위한 작은 따옴표 (')를 사용한다.

+0

감사합니다. 그게 내가 필요한 전부 야. 건배 – aoigengo

2

SQL 문 안에서는 큰 따옴표 [ "]를 사용할 수 없다.

1 월 1 일과 1은 두 배 대신 작은 따옴표 여야합니다.

필드 이름을 따옴표로 묶지 않아도됩니다.

"SELECT * FROM calendarevents WHERE 'EventMonth'="January" AND 'EventDay'="1"" 

"SELECT * FROM calendarevents WHERE EventMonth='Januay' AND EventDay='1'" 
+0

예, SQL 문에서 큰 따옴표를 사용할 수 있습니다. 문자열 리터럴을 감싸는 데는 작은 따옴표를 사용하는 것이 좋지만 MySQL에서는 문자열 리터럴에 대해 큰 따옴표를 사용할 수 있습니다 (세션의 'SQL_MODE'에 'ANSI_QUOTES'가 포함되지 않은 경우). OP "구문 문제"는 PHP에서 큰 따옴표 붙은 문제입니다 문자열, SQL 구문 문제가 아닙니다. (PHP는 큰 따옴표를 이스케이프 (escaping) 할 수 있습니다. 문자열 리터럴로 해석되기 때문에 식별자를 작은 따옴표로 묶지 마십시오 (SQL 문 내에서). – spencer7593

0
$iname = mysql_query("SELECT * FROM `calendarevents` WHERE `EventMonth`="January" AND `EventDay`=1") 
or die(mysql_error()); 
+0

실제로 PDO로 전환해야합니다. –

0

이 시도 : 따옴표의 위치에서

$query = "SELECT * FROM calendarevents WHERE EventMonth='January' AND EventDay = '1'"; 
$iname = mysql_query($query);