之前我从未使用过PDO来连接Informix数据库,在运行基本查询时出现了这个错误:
SQLSTATE=01S00, SQLDriverConnect: -11005 [Informix][Informix ODBC Driver]Invalid connection string attribute.
这是我的代码:
<?php
class prueba{
private static $cn = null;
public static function conectar(){
if(self::$cn !== null ) {
return self::$cn;
}
try{
self::$cn= new PDO("informix:host=localhost; service=30000;
database=mrroot; server=mrserver; protocol=onsoctcp;
EnableScrollableCursors=1", "mrtony", "");
return self::$cn;
} catch (PDOException $ex){
die($ex->getMessage());
}
}
public static function consulta(){
$query = "SELECT * FROM fr_envio";
$cn = prueba::conectar();
$resultado = $cn->prepare($query);
$resultado->execute();
echo '<table>';
while ($row = $resultado->fetch(PDO::FETCH_ASSOC))
{
echo '<tr>';
echo '<td>'.$row['enviopre'].'</td>';
echo '<td>'.$row['enviofra'].'</td>';
echo '<td>'.$row ['enviopec'].'</td>';
echo '<td>'.$row ['envioval'].'</td>';
echo '</tr>';
}
echo '</table>';
}
}
$prueba = new prueba();
$prueba->consulta();
?>
我在Mysql上测试了相同的代码,只需更改连接字符串,一切都很完美,似乎连接字符串缺少某些东西,我不知道它可能是什么。
我按照本教程中的说法进行了操作:
https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.virtapp.doc/TD_item2.htm
答案 0 :(得分:3)
嗯...尝试在一行中指定连接字符串。
root@irk:/usr3/products/php53# cat test.php
<?php
$db = new PDO("informix:host=irk;service=3046;database=stores7;
server=irk1210;protocol=onsoctcp;EnableScrollableCursors=1;", "informix", "ximrofni");
print "Connection Established!\n\n";
$stmt = $db->query("select * from systables");
$res = $stmt->fetch( PDO::FETCH_BOTH );
$rows = $res[0];
echo "Table contents: $rows.\n";
?>
root@irk:/usr3/products/php53# php test.php
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE=01S00, SQLDriverConnect: -11005 [Informix][Informix ODBC Driver]Invalid connection string attribute.' in /usr3/products/php5/test.php:4
Stack trace:
#0 /usr3/products/php5/test.php(4): PDO->__construct('informix:host=i...', 'informix', 'ximrofni')
#1 {main}
thrown in /usr3/products/php5/test.php on line 4
root@irk:/usr3/products/php53#
像这样:
root@irk:/usr3/products/php53# cat test.php
<?php
$db = new PDO("informix:host=irk;service=3046;database=stores7; server=irk1210;protocol=onsoctcp;EnableScrollableCursors=1;", "informix", "ximrofni");
print "Connection Established!\n\n";
$stmt = $db->query("select * from systables");
$res = $stmt->fetch( PDO::FETCH_BOTH );
$rows = $res[0];
echo "Table contents: $rows.\n";
?>
root@irk:/usr3/products/php53# php test.php
Connection Established!
Table contents: systables.
root@irk:/usr3/products/php53#