2013-05-15 10 views
3

sprintf가 false를 반환하는 이유를 알아 내려고 노력 중입니다. 누구든지 어떤 빛을 비춰 줄 수 있습니까?왜 sprintf가 false를 반환합니까?

sprintf("select dog_name, date_format(meet_date, '%D %M %Y') as date, track_name, race_name, race_stakes, race_class, race_stakes, result_place, result_box, winner_name, winner_id, result_dog_trainer, race_distance 
           from dog 
           join result using(dog_id) 
           join race r using(race_id) 
           join meet using(meet_id) 
           join track using(track_id) 
           join (select dog_name as winner_name, dog_id as winner_id, race_id 
             from dog 
             join result using(dog_id) 
             where result_place = 1          
             ) t0 on t0.race_id = r.race_id 
           where dog_id = %d 
            order by meet_date desc 
           limit %d", 12345, 50); 
+2

은'%의 D'입니까? – Orangepill

+0

멋진 반점을 찾으십시오 –

+0

내 대답을 시도해보십시오. =) –

답변

6

인수가 너무 적습니다. 당신이 date_formatsprintf()를 사용하는 경우는 다음과 같이 두 %를 사용한다 : 여기

sprintf("select dog_name, date_format(meet_date, '%%D %%M %%Y') as date, track_name, race_name, race_stakes, race_class, race_stakes, result_place, result_box, winner_name, winner_id, result_dog_trainer, race_distance 
           from dog 
           join result using(dog_id) 
           join race r using(race_id) 
           join meet using(meet_id) 
           join track using(track_id) 
           join (select dog_name as winner_name, dog_id as winner_id, race_id 
             from dog 
             join result using(dog_id) 
             where result_place = 1          
             ) t0 on t0.race_id = r.race_id 
           where dog_id = %d 
            order by meet_date desc 
           limit %d", 12345, 50); 

는 DATE_FORMAT 통화에서 PHPFiddle

관련 문제