php文件上传代码dsn,数据源名称无效-使用php、PDO和DSN连接到MySQL

这个剧本

/* Connect to a MySQL database using driver invocation */

$dsn = 'mysqldg';

$user = 'odbc_dg';

$password = '999999999';

try {

$dbh = new PDO($dsn, $user, $password);

} catch (PDOException $e) {

echo 'Connection failed: ' . $e->getMessage();

}

?>

给出错误

*Connection failed: invalid data source name*

我在中创建了一个条目

/等等/odbc.ini文件

具体如下:

[mysqldg]

Description = DGDB

Driver = mysql537

Database = dg1

Servername = 99.99.99.99

UID = odbc_dg

PWD = 999999

SSLKeyFile = /etc/mysql/ssl/ck.pem

SSLCertFile = /etc/mysql/ssl/cc.pem

SSLCAFile = /etc/mysql/ssl/c1.pem

包含以下条目:

[mysql537]

Description = MySQL driver for Plesk

Driver = /usr/lib/odbc2/lib/libmyodcb5w.so

Setup = /usr/lib/odbc2/lib/libmyodbc5w.so

入口

odbcinst.ini文件

使用非DSN连接。

很明显我遗漏了什么,有人能帮忙吗?谢谢。

更新。。。。

我试过你的常识代码如下:

$host = '46.99.199.199';

$db = 'dg';

$user = 'odbc_dg';

$pass = '999999';

$charset = 'utf8mb4';

$options = array(

PDO::MYSQL_ATTR_SSL_KEY => '/etc/mysql/ssl/ck.pem',

PDO::MYSQL_ATTR_SSL_CERT => '/etc/mysql/ssl/cc.pem',

PDO::MYSQL_ATTR_SSL_CA => '/etc/mysql/ssl/c1.pem'

);

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";

try {

$pdo = new PDO($dsn, $user, $pass, $options);

} catch (PDOException $e) {

echo 'Connection failed: ' . $e->getMessage();

}

?>

例如,这段使用odbc连接的代码可以工作。。。。

ini_set ('error_reporting', E_ALL);

ini_set ('display_errors', '1');

error_reporting (E_ALL|E_STRICT);

$user = "odbc_dg";

$pass = "99999";

$connection = "Driver= {mysql537};Server=46.99.199.199;Database=dgdb;UID=dgdb;PWD=999999;sslca=/etc/mysql/ssl/c1.pem;sslkey=/etc/mysql/ssl/ck.pem;sslcert=/etc/mysql/ssl/cc.pem";

$con = odbc_connect($connection, $user, $pass);

$sql="SELECT Id from stk_item";

$rs=odbc_exec($con,$sql);

if (!$rs) {

exit("Error in SQL");

}

echo "

echo "

Companyname";

echo "

Contactname";

while (odbc_fetch_row($rs)) {

echo odbc_result($rs, "Id"), "\n";

}

odbc_close($con);

echo "

";

?>

我的问题是我想通过pdo连接到远程数据库,因为这是Drupal同步代码中唯一允许的连接类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值