4

我试图弄清楚为什么 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);
4

1 回答 1

7

你的论据太少了。如果你使用sprintf()with date_format,你应该像这样使用两个%

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);

这是PHPFiddle

于 2013-05-15T03:20:41.970 回答