Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO Oracle字符类型绑定错误_Php_Oracle_Pdo_Parameters_Bind - Fatal编程技术网

PHP PDO Oracle字符类型绑定错误

PHP PDO Oracle字符类型绑定错误,php,oracle,pdo,parameters,bind,Php,Oracle,Pdo,Parameters,Bind,我在oracle(11g xe)“bill”中有一个表,其结构如下: key_id number(10), bill_no number(10), bill_date date, cons_id_no varchar(10), cons_no char(15) public function findByConsumerNumber($consumerNumber) { $pdo = new \PDO('oci:dbname=/localhost:1521/xe','kaushik','

我在oracle(11g xe)“bill”中有一个表,其结构如下:

key_id number(10),
bill_no number(10),
bill_date date,
cons_id_no varchar(10),
cons_no char(15)
public function findByConsumerNumber($consumerNumber) {
   $pdo = new \PDO('oci:dbname=/localhost:1521/xe','kaushik','123');
   $stmt = $pdo->prepare('SELECT * FROM bill WHERE cons_no = :cons_no');
   $stmt->bindParam(':cons_no',$consumerNumber);
   $stmt->execute();
   return $this->findCollection($stmt->fetchAll());
}
我使用PHP::PDO连接到数据库,如下所示:

key_id number(10),
bill_no number(10),
bill_date date,
cons_id_no varchar(10),
cons_no char(15)
public function findByConsumerNumber($consumerNumber) {
   $pdo = new \PDO('oci:dbname=/localhost:1521/xe','kaushik','123');
   $stmt = $pdo->prepare('SELECT * FROM bill WHERE cons_no = :cons_no');
   $stmt->bindParam(':cons_no',$consumerNumber);
   $stmt->execute();
   return $this->findCollection($stmt->fetchAll());
}
但在执行时,我得到了0个结果。但当我按如下方式更改代码时,我得到的结果是:

public function findByConsumerNumber($consumerNumber) {
   $pdo = new \PDO('oci:dbname=/localhost:1521/xe','kaushik','123');
   $stmt = $pdo->prepare("SELECT * FROM bill WHERE cons_no = '" . $consumerNumber . "'");
   $stmt->execute();
   return $this->findCollection($stmt->fetchAll());
}
我找不到真正的问题


注意:当我尝试根据上面给出的第一种方法中的cons_id_no查找结果时,我得到了结果。

您有一个拼写错误:connumbernumber应该是consumerNumber


您应该研究依赖注入,每次调用方法时初始化db连接都是疯狂的。

拼写错误不是问题所在。我正在使用IDE,代码完成处理它。是否尝试设置PDO以引发异常<代码>$pdo->setAttribute(pdo::ATTR\u ERRMODE,pdo::ERRMODE\u异常)。你可能会知道发生了什么wrong@Phil,我正在用它。它没有显示任何错误。只得到0个结果。不,你不是。它在代码中的什么位置?@Phil,实际上我使用的是数据映射器模式,在适配器的连接方法中,我使用的是
$pdo->setAttribute(pdo::ATTR_ERRMODE,pdo::ERRMODE_EXCEPTION)
。当我发现这个错误时,我尝试在没有任何抽象的情况下执行sql。上面给出了代码,但我得到了相同的结果。