我得到了一个像这样调用的存储过程:
SP_REPORT_HOME 'param1','param2',1
它执行了一堆我不知道的代码,虽然它返回了我需要使用的一堆数据。它包含一些具有空值的字段,而其他字段则完全填充(请注意,整行不为空,只有一些字段) 好吧,我在Ubuntu 10.10机器上使用PDO和PHP来获取该信息,我的getReport方法是:
public function getReport($empresa1, $empresa2, $num) {
$ds = $this->connection->prepare('SP_REPORT_HOME ?,?,?');
$ds->bindParam(1, $empresa1, PDO::PARAM_STR, 4);
$ds->bindParam(2, $empresa2, PDO::PARAM_STR, 4);
$ds->bindParam(3, $num, PDO::PARAM_INT, 4);
$ds->execute();
return $ds->fetchAll();
}
$ this->连接只是一个像这样创建的PDO实例:
$this->connection = new PDO(
"dblib:host=IP:PORT;dbname=DBNAME",
"LOGIN",
"PASS"
);
该方法返回包含数据的数组,而不包含包含空字段的行,任何人都知道它为什么不显示这些行?我真的需要它们。 我正在使用PHP5.3和SQLServer 2008
答案 0 :(得分:0)
查看http://php.net/manual/en/pdo.setattribute.php以获取ATTR_ORACLE_NULLS设置。我猜这个设置可以获得你想要的输出。
答案 1 :(得分:0)
嗯,结果是程序出错了,虽然这很奇怪。
该过程在其中一个步骤中创建一个临时表并插入我想要的数据。在我们在这里使用的其他系统(内置于java)中,该过程工作正常,完全没有错误,所有数据都存在。 SQL Server Management Studio也是如此,没有查询错误。
虽然在php中插入失败,因为它创建了非空字段的表(虽然它不会这样做)。我发现这使用mssql方式尝试连接和查询。在$ connection-> query()调用中,它显示了一个插入错误,说我试图在非空字段中插入null。虽然没有停止剧本。导致结果没有包含空字段的行。 pdo版本可能有同样的问题,但是正在抑制错误信息。
好吧,我们改变了程序,所以表创建指示空字段,但是,我们仍然不知道为什么它在所有其他系统中工作,并且在php中它使用了这些字段的另一个默认值...