2016-01-13 110 views
1
$sql = 'INSERT INTO `' . $table_name . '` ' 
      . '(`day`, `campaign_name`, `campaign_id`, `views`, `CPM`, `cost`, `currency`, `cost_EUR`) VALUES ' 
      . '(:day, :campaign_name, :campaign_id, :views, :CPM, :cost, :currency, :cost_EUR)'; 

$this->_dbi->execute($sql, array(
      ':day'  => $day, 
      ':campaign_name'  => $campaignName, 
      ':campaign_id' => $campaignID, 
      ':views'   => $views, 
      ':CPM'  => $cpm, 
      ':cost'  => $cost_EUR, 
      ':currency'  => 'EUR', 
      ':cost_EUR' => $cost_EUR 
)); 

的数量。 我只是无法弄清楚这里的错误。PDOStatement对象::执行():SQLSTATE [HY093]:无效的参数编号:绑定变量的数量并不至于我可以告诉变量的数量做匹配令牌的数量相匹配的令牌

+0

看起来没问题。你确定这个错误是指那个确切的查询吗? –

+0

execute(array(':name'=>'Apple',':color'=>'red'));执行只有一个参数 –

+0

http://php.net/manual/en/pdostatement.execute.php –

回答

1

您只需要将数组传递给execute方法。所以,你的更新的代码应该是这样的:

$sql = 'INSERT INTO `' . $table_name . '` ' 
      . '(`day`, `campaign_name`, `campaign_id`, `views`, `CPM`, `cost`, `currency`, `cost_EUR`) VALUES ' 
      . '(:day, :campaign_name, :campaign_id, :views, :CPM, :cost, :currency, :cost_EUR)'; 
$sth = $this->_dbi->prepare($sql);  
$sth->execute(array(
      ':day'  => $day, 
      ':campaign_name'  => $campaignName, 
      ':campaign_id' => $campaignID, 
      ':views'   => $views, 
      ':CPM'  => $cpm, 
      ':cost'  => $cost_EUR, 
      ':currency'  => 'EUR', 
      ':cost_EUR' => $cost_EUR 
)); 

在这里阅读更多:http://php.net/manual/en/pdostatement.execute.php

PDOStatement对象::执行 - 执行一个准备好的声明

使用公共BOOL PDOStatement对象::执行([array $ input_parameters])

下面是从th e文档:

<?php 
/* Execute a prepared statement by passing an array of insert values */ 
$calories = 150; 
$colour = 'red'; 
$sth = $dbh->prepare('SELECT name, colour, calories 
    FROM fruit 
    WHERE calories < :calories AND colour = :colour'); 
$sth->execute(array(':calories' => $calories, ':colour' => $colour)); 
+0

感谢它工作:)但我不明白为什么我不需要执行$ sql? – user3378734

+0

啊..刚刚意识到,你有没有准备好声明?我刚走出去。您需要像文档示例 – Clay

+0

那样准备我已更新我的答案以包含准备声明。这当然假定$ this - > _ dbi是PDO对象的一个​​实例。 – Clay

相关问题