2016-04-08 15 views
2
Ben

PDO bağlama hatası

$client_ids = array('client_id' => $this->arParams['client_id']); 
print_r($client_ids); 
$client_ids_in = implode(',', array_fill(0, count($client_ids), '?')); 
$query = "SELECT odc.curr_id FROM office.dictionary_currency AS odc LEFT JOIN office.adwords_clients_google AS oacg ON odc.curr_code = oacg.client_currency WHERE oacg.client_id IN ($client_ids_in)"; 
     $google_currency = $this->DB->prepare($query); 
     $google_currency->execute($client_ids); 
     $google_currency->setFetchMode(PDO::FETCH_ASSOC); 
     $google_currency = $google_currency->fetch(); 
     $google_currency = $google_currency['curr_id']; 

$client_ids gibi

Array 
(
    [client_id] => 15087 
) 

$query

SELECT odc.curr_id FROM office.dictionary_currency AS odc LEFT JOIN office.adwords_clients_google AS oacg ON odc.curr_code = oacg.client_currency WHERE oacg.client_id IN (?) 

görünüyor db bazı değerleri elde etmeye çalışmak ve bir hata alıyorum

PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /var/www/instruments/reports/report.php on line 531 

o hata üst üste

$google_currency = $this->DB->prepare($query); 

sorun ne? Nasıl bunu düzeltmek için, demek? Eğer bir sivil yürütmek geçmesi gerekiyor ? Eğer jenerik tutucuları kullanıyorsanız

+1

baskı senin $ sorgu – Mihai

+0

Katma $ post – Heidel

+1

Olası kopya halinde sorgu [Bir İÇİNDE() duruma bir dizi bağlamak miyim?] (Http://stackoverflow.com/questions/920353/can-i-bind-an-array-to-an-in-condition) –

cevap

1

Değişim kodunuzu

$client_ids = array($this->arParams['client_id']); 

gibi bir şey

$client_ids = array('client_id' => $this->arParams['client_id']); 

Yani $client_ids

Array 
(
    0 => 15087 
) 
+0

Yardım için çok teşekkürler! – Heidel

1

gibidir ilişkisel dizi. Yani dizininizi 'client_id' anahtar formundan kaldırabilir veya adlandırılmış bir yer tutucu kullanabilirsiniz.

Olası çözüm

$client_ids = array($this->arParams['client_id']); 
+0

Yardımlarınız için çok teşekkürler! – Heidel