Sybase 通过 PHP 查询重复值
Sybase queried through PHP duplicates values
我目前正在使用 ODBC PDO 在 Windows Server 2012 R2 上使用 PHP 查询 sybase 数据库。当我 运行 一个典型的 select 语句时,例如 "SELECT * FROM sysobjects WHERE type = 'U'" 它似乎爆炸了一个数组,该数组将前一个键的最后一个值作为当前键的第一个值,如下所示:
"[uid] => 101 [2] => 101 [类型] => U [3] => U [userstat] => 0 [4] => 0 [sysstat] => 0" =12=]
如您所见,结束 [uid] 索引的“101”元素在索引 [2] 的开头重复,索引 [2] 末尾的“=> U”在索引 [2] 的开头重复索引 [3],依此类推 - 这会持续到整个数组爆炸。这似乎不对 - 有没有人知道为什么会发生这种情况以及解决方案是什么(如果这是异常的?)。如果对您有帮助,我会在下面添加 PHP:
<?php
//[BD]---Display All Errors
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
echo "Boom! <br /><br />";
//[BD]---Try the Connection
try {
//Connection Variables
$dsn = "odbc:Database";
$username = "user";
$password = "password";
//Connection String
$conn = new PDO($dsn, $username, $password);
//Initiating Error Detection
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
//[BD]---Catch exceptions to the Try
catch(Exception $e) {
echo "Invalid Connection";
//Print Error Messages
die( print_r( $e->getMessage() ) );
}
//[BD]---SQL Statement(s)
/*
----------List of Tables----------
*/
$stmt = $conn->prepare("SELECT * FROM sysobjects WHERE type = 'U'");
//[BD]---Execute SQL Statement
$stmt->execute();
while ($row = $stmt->fetch()) {
print_r($row);
echo "<br />";
}
echo "<br />Connected Successfully";
?>
这是正常的。默认情况下,返回的行数组中的键同时包含字段名和列号(从 0 开始)。如果您只想要一个或另一个,您可以将 fetch_style
var 设置为 PDO::FETCH_ASSOC 以仅使用名称作为键,或 PDO::FETCH_NUM 按列号索引它们。
如@http://php.net/manual/en/pdostatement.fetch.php
所述,这是 fetch
的第一个参数
我目前正在使用 ODBC PDO 在 Windows Server 2012 R2 上使用 PHP 查询 sybase 数据库。当我 运行 一个典型的 select 语句时,例如 "SELECT * FROM sysobjects WHERE type = 'U'" 它似乎爆炸了一个数组,该数组将前一个键的最后一个值作为当前键的第一个值,如下所示:
"[uid] => 101 [2] => 101 [类型] => U [3] => U [userstat] => 0 [4] => 0 [sysstat] => 0" =12=]
如您所见,结束 [uid] 索引的“101”元素在索引 [2] 的开头重复,索引 [2] 末尾的“=> U”在索引 [2] 的开头重复索引 [3],依此类推 - 这会持续到整个数组爆炸。这似乎不对 - 有没有人知道为什么会发生这种情况以及解决方案是什么(如果这是异常的?)。如果对您有帮助,我会在下面添加 PHP:
<?php
//[BD]---Display All Errors
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
echo "Boom! <br /><br />";
//[BD]---Try the Connection
try {
//Connection Variables
$dsn = "odbc:Database";
$username = "user";
$password = "password";
//Connection String
$conn = new PDO($dsn, $username, $password);
//Initiating Error Detection
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
//[BD]---Catch exceptions to the Try
catch(Exception $e) {
echo "Invalid Connection";
//Print Error Messages
die( print_r( $e->getMessage() ) );
}
//[BD]---SQL Statement(s)
/*
----------List of Tables----------
*/
$stmt = $conn->prepare("SELECT * FROM sysobjects WHERE type = 'U'");
//[BD]---Execute SQL Statement
$stmt->execute();
while ($row = $stmt->fetch()) {
print_r($row);
echo "<br />";
}
echo "<br />Connected Successfully";
?>
这是正常的。默认情况下,返回的行数组中的键同时包含字段名和列号(从 0 开始)。如果您只想要一个或另一个,您可以将 fetch_style
var 设置为 PDO::FETCH_ASSOC 以仅使用名称作为键,或 PDO::FETCH_NUM 按列号索引它们。
如@http://php.net/manual/en/pdostatement.fetch.php
所述,这是fetch
的第一个参数