2017-02-23 111 views
0

如何将mysql代码转换为pdo连接?因为我有一些网络问题。如何将mysql转换为PDO连接?

$gaSql['user'] = "root"; 
$gaSql['password'] = ""; 
$gaSql['db'] = "test"; 
$gaSql['server'] = "localhost"; 

// DB connection 
function dbinit(&$gaSql) { 

// if error rezults 500 
function fatal_error($sErrorMessage = '') { 
header($_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error'); 
die($sErrorMessage); 
} 

// connecting to mysql 
if (!$gaSql['link'] = @mysql_connect($gaSql['server'], $gaSql['user'], $gaSql['password'])) { 
fatal_error('Could not open connection to server'); 
} 

// select the DB 
if (!mysql_select_db($gaSql['db'], $gaSql['link'])) { 
fatal_error('Could not select database'); 
} 
} 
+0

对于PDO尝试阅读[手册](http://php.net/manual/en/pdo.connections.php)&this [post](https:// phpdelusions.net/pdo)。为什么你使用你的函数来查找错误而不是'mysql_error()'。 – gaurav

回答

2

正确PDO DB连接

<?php 

    $host = '127.0.0.1'; 
    $db = 'your db'; 
    $user = 'root'; 
    $pass = ''; 
    $charset = 'utf8'; 

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; 
    $options = [ 
      PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
      PDO::ATTR_EMULATE_PREPARES => false, 
      ]; 


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

?> 

参考:https://phpdelusions.net/pdo

一世 在我所有的pdo连接中使用它,它可以很好地工作

0

你可以尝试这样的事:

try { 
    $pdo = new PDO('mysql:host=' . $gaSql['server'] . ';dbname=' . $gaSql['db'], $gaSql['user'], $gaSql['password']); 
} catch (PDOException $ex) { 
    if ($ex->getCode() == 1049) { 
     throw new Exception('Unknown Database: ' . $gaSql['db']); 
    } elseif ($ex->getCode() == 1045) { 
     throw new Exception('Wrong credentials for user: ' . $gaSql['user']); 
    } 
} 

希望,这有助于;-)

+0

加载资源失败:服务器响应状态为500(内部服务器错误) –

+0

关于PDO的好处是,它可以自行发出致命错误,使任何其他代码多余 –