2010-04-01 5 views
0

몇 가지 이유로 mysql 문 안에 var를 전달할 수 없습니다. 여러 테이블에 사용할 수있는 함수가 있습니다. 그래서SQL 문에서 PHP 변수 사용?

function show_all_records($table_name) { 

    mysql_query("SELECT * FROM $table_name"); 

etc, etc... 

} 

과 같이로부터 선택되는 테이블을 변경하기 위해 내가 할 표가에 따라 show_all_records("some_table") 또는 show_all_records("some_other_table")

를 사용하는 함수를 호출 할 대신 코드를 반복하는 지금부터 선택하십시오. 하지만 변수가 mysql 문을 통과 할 수 없기 때문에 작동하지 않습니다.

+0

필수 : ​​테이블 이름이 동적 인 경우, 테이블 이름이 동적 인 경우, SQL에 삽입하기 전에'/^\ w + $ /'또는 이와 유사한 문자와 일치하는지 확인해야합니다. 그렇지 않으면 SQL 삽입 공격에 취약 할 수 있습니다. – rjh

답변

4

붙여 넣은 코드가 작동해야합니다. 가능한 이유는은하지 않습니다 당신은

die("SELECT * FROM $table_name");을 시도하고 당신이 잘못을 정확히 볼 수

  • 당신은 $table_name
  • 을 맞춤법이 틀린 (큰 따옴표 대신 작은 따옴표) 'SELECT * FROM $table_name'을 사용하는

    • !

    2

    $results = mysql_query("SELECT * FROM $table_name") or die(mysql_error()); 
    

    을 시도하고이 말씀을 수행 알려주십시오. 이론적으로 $ table_name은 ""이 아닌 ""이면서 ""이 아닌 문자열로 구문 분석되어야합니다.

    0

    쿼리가 정상적으로 처리됩니다. 그게 효과가없는 이유를 알 수 없습니다. mysql_connect()를 사용하여 DB에 제대로 연결 했습니까? 연결이 설정 되었습니까? 연결하려는 사용자가 액세스하려는 테이블에 대해 SELECT 권한을 가지고 있습니까?

    0

    최근 SQL, PHP 및 MySQL에 대한 경험으로 필자는 PHP 스크립트 내부에서든 PHP phpMyAdmin에서 SQL 상호 작용을하든 상관없이 아래처럼 SQL 문을 작성해야한다고 설명했습니다. 그렇지 않으면 내 쿼리가 작동하지 않습니다. 나는 당신이 위에 올린 것과 동일한 코드를 수정하여 일반화하기 위해 비트를 일반화합니다. 그리고 작동하는 일반적인 규칙을 제공하십시오.

    자체 또는 변수 이름을 나타내는 데이터가 해당 데이터를 나타내는 모든 값 (레코드 값이 아닌 db, 테이블 또는 열 이름) 주위에 작은 따옴표를 사용하십시오. 나는 ' 표를 의미한다. 또한 언어 PHP의 가변 범위는 항상 다른 것으로 간주되어야합니다.

    1. 두 번 인용 모든 SQL 쿼리를 : SQL에서
      function show_all_records($table_name) { 
      
          mysql_query("SELECT `Username` FROM `$table_name` WHERE `Username` = 'edwin'"); 
      
      etc, etc... 
      
      } 
      

      나는 내 쿼리가 일반적으로 작동하도록 다음과 같은 구문 규칙을 따라야합니다 발견했다. 내 말은 " 마크입니다.
    2. 모든 데이터베이스 이름과 테이블 이름 및 열 이름을 역 인용하십시오 (열 이름은 따옴표로 묶지 않아도됩니다). 나는`(option + comma on Macintosh)를 의미한다.
    3. 단일 견적 모든 값. 나는 ' 마크를 의미합니다.
    4. 위의 세 가지 규칙과 관련된 값에 대해 동일한 인용 부호로 변수를 인용하십시오.
    +0

    두 번째 사람의 역 인용 부호를 벗어날 수 없다는 것을 알고있는 사람은 적절하게 편집하고 싶어 할 수 있습니다. –