2011-09-01 5 views
1

비슷한 질문을 보았지만 아직 답변이 없습니다.printf 또는 이와 유사한 SQL 쿼리?

나는 다음과 같은 SQL 쿼리를 가지고 : patient_db_0004 내가 내 SQL 쿼리 내부에 "0001000200030004"와 같은 자동 증분 색인을 인쇄 할 것입니다

$sql = mysql_query("SELECT * FROM patient_db_0004 WHERE MATCH (Name, id_number) AGAINST ('$term' IN BOOLEAN MODE);"); 

.

printf("%04s",$i); 

쿼리 내부의 값을 인쇄합니다.

답변

2

MySQL에서는 string functions을 사용할 수 있습니다. 귀하의 예를 들어, 당신은 당신의 데이터베이스 엔진에 대한 유사한 기능을 검색 할 수 LPAD

SELECT LPAD(`id`, 4, '0') FROM patient_db_0004 

을 시도 할 수도 있습니다.

샘플 출력 :

mysql> SELECT LPAD(`id` , 4, '0') FROM `patient_db_0004` LIMIT 10; 
+---------------------+ 
| LPAD(`id` , 4, '0') | 
+---------------------+ 
| 0001    | 
| 0002    | 
| 0003    | 
| 0004    | 
| 0005    | 
| 0006    | 
| 0007    | 
| 0008    | 
| 0009    | 
| 0010    | 
+---------------------+ 
10 rows in set (0.00 sec) 

(I있어이 AUTO_INCREMENT 필드 위의 예에서 id라고도 함)

편집 : 귀하의 의견에 따라, 그것은 Vincent's answer 것 같다 당신이 찾고있는 무슨이다 대한 :

<?php 
$term = 'foobar'; 
for($i=1; $i<5; $i++) 
{ 
    echo(sprintf("SELECT * FROM patient_db_%04d WHERE MATCH (Name, id_number) AGAINST ('$term' IN BOOLEAN MODE);\n", $i)); 
} 
?> 

내게 준 :

SELECT * FROM patient_db_0001 WHERE MATCH (Name, id_number) AGAINST ('foobar' IN BOOLEAN MODE); 
SELECT * FROM patient_db_0002 WHERE MATCH (Name, id_number) AGAINST ('foobar' IN BOOLEAN MODE); 
SELECT * FROM patient_db_0003 WHERE MATCH (Name, id_number) AGAINST ('foobar' IN BOOLEAN MODE); 
SELECT * FROM patient_db_0004 WHERE MATCH (Name, id_number) AGAINST ('foobar' IN BOOLEAN MODE); 

제대로 이해하면 이러한 쿼리를 실행하려고합니다. 따라서 여기에 대해 고려해야 할 사항은 다음과 같습니다.

<?php 
// ... 
for($i=1; $i<5; $i++) 
{ 
    $query = sprintf("SELECT * FROM patient_db_%04d WHERE MATCH (Name, id_number) AGAINST ('$term' IN BOOLEAN MODE);\n", $i); 
    $sql = mysql_query(); 
} 
?> 
+0

그래서 'patient_db_0004', patient_db_0005, patient_db_0006 - 자동으로 선택할 수 있습니까? – iamwhitebox

+0

아마도 귀하의 질문에 대한 오해가있었습니다. 내 대답을 편집했습니다. 희망이 도움이됩니다. – Umang

1

당신은 (문자열에 값을 인쇄하는)의 printf 대신 sprintf를 사용하려면 :

$query = sprintf("SELECT foo FROM bar WHERE baz = '%s'", "hi"); 
$sql = mysql_query($query); 

그러나,이 SQL 주입에 방해가되지 않는다는 것을 명심하십시오. 여전히 사용자 제공 데이터에 mysql_real_escape_string을 사용해야합니다.

관련 문제