2013-10-30 1 views
1

변수 테이블 이름 데이터베이스 이름 및 값을 선택할 수있는 방법이 있습니까?MYSQL을 사용하여 데이터베이스 및 테이블 변수로 데이터를 선택하는 방법

다음과 같이 열 값이 존재하는지 확인하고 있습니다. 테이블 이름과 열 이름과 값이 가변적이기 때문에이 방법을 강요했습니다 ...

이것은 저장 프로 시저 파일에서 사용됩니다.

SELECT 1 
     FROM INFORMATION_SCHEMA.COLUMNS 
     WHERE TABLE_SCHEMA= 'database1' 
     AND TABLE_NAME= 'table1' 
     AND COLUMN_NAME = 'clmn_id_fk' 
     AND 'database1.table1.clmn_id_fk'=2218 

내가 결과를 찾을 수 없습니다입니다 :

내가 좋아하는 뭔가를 원한다. 도움이나 팁이 상당 함 미리 감사드립니다.

+0

예. php.just를 사용하여 테이블 이름을 변수에 할당하고 mysql 쿼리에서 해당 변수를 사용하는 것이 좋습니다. –

+0

답장을 보내 주셔서 감사합니다.하지만이 코드는 저장 프로 시저에 의해 호출됩니다 – tradebel123

+0

무엇이 질문입니까? – geomagas

답변

1

다음과 같이 저장 프로 시저에서 아이디어를 얻을 수 있습니다. 원하는 솔루션을 달성하는 데 필요한 모든 것을 변경하십시오. 모든 관련 제한 사항과 유효성 검사를 포함하는 것이 매우 중요합니다.

/* CODE FOR DEMONSTRATION PURPOSES */ 

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `sp_check`$$ 

CREATE PROCEDURE `sp_check`(`p_table_schema` VARCHAR(64), `p_table_name` VARCHAR(64), `p_column_name` VARCHAR(64), `p_value` INT) 
BEGIN 
    IF EXISTS (SELECT NULL 
      FROM `information_schema`.`columns` 
      WHERE `table_schema` = `p_table_schema` AND 
      `table_name` = `p_table_name` AND 
      `column_name` = `p_column_name`) THEN 
     SET @qry := CONCAT('SELECT IF(COUNT(`', `p_column_name`, '`), 1, 0) AS `EXISTS` FROM `', `p_table_schema`, '`.`', `p_table_name`, '` WHERE `', `p_column_name`, '` = ', `p_value`); 
     PREPARE stmt FROM @qry; 
     EXECUTE stmt; 
     DEALLOCATE PREPARE stmt; 
    ELSE 
     SELECT 0 AS `EXISTS`; 
    END IF; 

END$$ 

DELIMITER ; 

CALL `sp_check`('database1', 'table1', 'clmn_id_fk', 2218); 
관련 문제