2010-06-15 4 views
1

나는 프로그래머가이 SQL을 가지고SQL에서 '?'는 무엇을 의미합니까?

$sql = " 
    INSERT INTO 
    `{$database}`.`table` 
    ( 
    `my_id`, 
    `xType`, 
    `subType`, 
    `recordID`, 
    `textarea` 
    ) 
    VALUES 
    ( 
    {$my_id}, 
    ?xType, 
    ?subType, 
    {$recordID}, 
    ?areaText 
    ) "; 

내 질문은 왜 값 전에 ?을 사용하고 있습니까? 어떤 가치가 유입되고 있는지 어떻게 알 수 있습니까? 나는 echo을했고 ?xType?xType으로 표시합니다. 값이 없습니다. 뭐야? SQL을지지 해 주시겠습니까?

답변

9

저에게 named parameter처럼 보입니다.

+2

+1하지만 .NET 제공 업체에만 해당되는 것으로 보입니다. 나는 PHP에서 그 스타일의 매개 변수에 대한 사용법을 모른다. –

+0

구문'? '은 MySQL과 관련이 없으며 .NET과 관련이 없습니다. –

+1

SQL 표준은': '을 사용하며, PHP 프로그래머가 만성적으로 사용하지 않는 것은 오랫동안 프로그래머의 명예를 앗아갔습니다 (SQL 주입 공격). –

-1

일종의 파서에 의해 구문 분석 될 자리 표시자인 것처럼 보입니다. 아마도 그들은 어떤 틀 아래에있을 것입니다.

1

John Weldon이이 경우에 맞지만 아래와 같은 sql을 보았습니까? 값의 자리 표시 자임을 의미합니다. sql에는 sql에있는?의 양과 동일한 매개 변수가 수반됩니다. 이 경우 매개 변수에서 값을 가져 와서 이스케이프 처리해야합니다.

INSERT INTO 
    `{$database}`.`table` 
    ( 
    `my_id`, 
    `xType`, 
    `subType`, 
    `recordID`, 
    `textarea` 
    ) 
    VALUES 
    ( 
    ?, 
    ?, 
    ?, 
    ?, 
    ? 
    ) "; 
+0

이것은 위치 매개 변수입니다. 명명 된 매개 변수를 사용하면 이름에서 값으로 쿼리를 가져 오는 값으로 맵을 제공 할 수 있습니다. 이는 특히 유지 관리 분야에서 훨씬 더 명확해질 수 있습니다. –

+0

나는 사용자가 위치 매개 변수를보고 명명 된 매개 변수를 기대하며 혼란스러워 할 때를 대비해서 위의 내용을 언급했다. –

-1

또 다른 미친 생각이 있습니다. 다른 사람의 코드를 유지하고있는 것입니까? 실제로 작동합니까/실행합니까? 그렇지 않다면 그는 매개 변수 또는 매개 변수의 이름을 잘 모르기 때문에 물음표에 넣었습니까? 때로는 내가 다시 돌아가서 그것을 알아 내도록 강요 할 것이므로 (그래서 나는 잊지 않는다) 컴파일하지 않는 것을 넣는다.

+0

-1. John Weldon이 정답을 게시했습니다. 포스터가 이런 정보를 요구하지 않는 시간의 95 %는 필요하지 않으며 소음/쓸모가 없습니다. 나는 많은 경험을 가지고 질문을하고 대답을 얻는다는 것을 알아야한다. –

+0

acidzombie24, 나는 단지 도우려고 노력하고 있었는데, 거시기와 downvoting에 대한 감사합니다. 아, 그리고 많은 경험을 한 경험이 있다면, 어떻게 당신 의견이 잘못 쓰여지고 말이 안되나요? 정보 요청 - 뭐라구? 일반적으로 질문이있을 때 나는 답이 무엇인지 모르며 실제로 나를 도울 사람을 찾고 있습니다. 어쨌든 이제는 저를 무언가 표시 할 것입니다. 계속 해봐, 내가 그토록 끔찍한 지역 사회의 일원이기 때문에 그럴 자격이있어. 고마워. – eeeeaaii

관련 문제