$zips = array('10583','06890','06854');
$list = implode("','",$zips);
$q = "SELECT site_id FROM site_zipcodes WHERE zipcode IN ('%s')";
$result = db_query($q, $list);
此查詢不會返回任何結果。爲什麼此查詢在Sequel Pro中工作,但不在PHP中?
然而,相同的參數的sprintf返回
SELECT site_id FROM site_zipcodes WHERE zipcode IN ('10583','06890','06854')
,當我把查詢到續集專業,我得到三個結果(預期的行爲)。
當我在IN語句中使用一個zipcode時,db_query工作得很好。
我不能爲我的生活弄清楚爲什麼會發生這種情況。
如果在傳遞完整的SQL字符串時'db_query()'正常工作,那就太好了。但是我們不能告訴你'($ q,$ list)'不會發生什麼,因爲你沒有共享你的特定的db_query函數。 – mario 2014-08-28 17:10:20
如果sprintf生成有效的SQL查詢,爲什麼不''查詢= sprintf($ q,$ list);'? – 2014-08-28 18:40:11