Hãy thử các hàm hiện có và các biến hằng số của tôi, bạn cũng có thể thay đổi các hằng số đó thành một biến mảng mà bạn có.
define("SERVER_SQL_VERSION","mysql");
define("SQL_SERVER","localhost");
define("SQL_PORT","3306");
define("SQL_USERNAME","root");
define("SQL_PASSWORD","");
define("SQL_DB_NAME","db");
if(!function_exists('pdoConnect')) {
function pdoConnect() {
$pdo = new PDO(SERVER_SQL_VERSION.":host=".SQL_SERVER.";dbname=".SQL_DB_NAME."", "".SQL_USERNAME."", "".SQL_PASSWORD."");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
return $pdo;
}
}
Có thể có sự cố về cách ghép nối của bạn, điều này chắc hẳn đang hoạt động ...
Tôi cũng đã tách SERVER_SQL_VERSION và thêm một hàm để kiểm tra xem trình điều khiển có khả dụng hay không ... Tôi đang sử dụng phần mềm XAMPP và chỉ mysql và sqlite là hoạt động, nếu bạn / những người khác cố gắng sử dụng postgresql, v.v. đang hoạt động tốt.
if(!function_exists('check_sql_version')) {
function check_sql_version() {
$sql_available = false; //make it false yet
foreach(PDO::getAvailableDrivers() as $key => $val) {
if(SERVER_SQL_VERSION == $val)
{
$sql_available = true;
}
}
//check now if sql_available is true or false
if($sql_available == true)
return true;
else
return false;
}
}
Vì vậy, một mẫu nên được xem xét:
if(!check_sql_version()) {
echo '('.SERVER_SQL_VERSION.') is not available, you only have this drivers:<br/>';
foreach(PDO::getAvailableDrivers() as $key => $val) {
$key = $key + 1;
echo $key.') '.$val.'<br/>';
}
exit(); //exit and dont proceed
}
$stmt = pdoConnect()->prepare("SELECT * FROM accounts");
$stmt->execute();
Tôi hy vọng nó sẽ hữu ích!