PHP PDO Oracle字符类型绑定错误
我在oracle(11g xe)“bill”中有一个表,其结构如下: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','
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。上面给出了代码,但我得到了相同的结果。