Dizeler dizisini değiştirmek için bir sorgu içinde db_placeholder kullanıyorum.Neden db_placeholder sorgum için boş dizeleri döndürüyor?
$paths = array("commentary_analysis/18", "commentary_analysis/16", "commentary_analysis/95", "commentary_analysis/89");
$query = "SELECT DISTINCT a.uid, u.mail FROM {alerts} a JOIN {users} u on u.uid = a.uid WHERE u.mail IS NOT NULL AND u.mail != '' AND u.status = 1 AND a.status = %d AND a.view_path IN (" . db_placeholders($paths, 'text') . ") ORDER BY a.uid ASC";
$users_to_notify = db_query($query, $alert_status, $paths);
Sorunu, bildiğim zaman döndürmüyor. Çalıştırılmakta olan tam sorguyu görmek için sorguyu ayıkladım. Sorgu yürütülüyor
SELECT DISTINCT a.uid, u.mail FROM alerts a JOIN users u on u.uid = a.uid WHERE u.mail IS NOT NULL AND u.mail != '' AND u.status = 1 AND a.status = 1 AND a.view_path IN ('','','','') ORDER BY a.uid ASC
Bildirim, a.view_path IN ('','','','')
vardır. Sorun budur. Gördüğüm kadarıyla db_placeholder'ın doğru sözdizimi ile kullanılmasını bekliyorum.
Birisi bana db_placeholder kullanımımın neden ("commentary_analysis/18", "commentary_analysis/16", "commentary_analysis/95", "commentary_analysis/89")
yerine ('','','','')
döndürdüğünü söyler misiniz?
Eğer db_placeholders kullanmadan Drupal6 içinde 'IN ("metin", "metin", "metin")' ile bir sorgu aday olacağını başka nasıl? 'Varchar'ın neden' metin 'den farklı çalışmasını beklersiniz? Her ne kadar 'varchar' kullanılmasına katılıyorum olsa da, denediğim tek değişiklik bu davranışın farklı olmasını beklemezdim. Ben 'varchar' ile değiştirmeyi deneyin ve aynı sonucu vardı. –
'Metin' iyi çalışır, ancak 'varchar' muhtemelen kullanmak için uygun bir türüdür. Sorun argümanlarda işleve geçiyor. –