第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

在 PHP 中連接 MySQL 數(shù)據(jù)庫

在 PHP 中連接 MySQL 數(shù)據(jù)庫

PHP
守著一只汪 2023-09-22 14:51:56
我正在嘗試建立一個(gè)博客網(wǎng)站。它部署在 Heroku 上,并且應(yīng)該連接到 MySQL 數(shù)據(jù)庫。登錄我的數(shù)據(jù)庫所需的信息存儲在 Heroku 上的環(huán)境變量中,如下所示(當(dāng)然這些是假憑證):mysql://g46w916ds134b8:639f463e@us-cdbr-east-03.cleardb.net/heroku_45fab1d19h35yetf?reconnect=true它包含數(shù)據(jù)庫名稱、用戶、密碼和主機(jī)。有沒有一種方法可以直接在我的 PHP 代碼中使用這個(gè)字符串來連接數(shù)據(jù)庫?我檢查了 MySQLi 和 PDO 文檔,似乎它們只接受 DSN/用戶/密碼或主機(jī)/用戶/密碼/DBname 格式。
查看完整描述

2 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

畢竟這是一個(gè)url,所以你可以使用parse_url函數(shù)來提取數(shù)據(jù)。


// Connection string from environmental variable in heroku

$connectionStringHerokuEnv = 'mysql://g46w916ds134b8:639f463e@us-cdbr-east-03.cleardb.net/heroku_45fab1d19h35yetf?reconnect=true';

$parsed = parse_url($connectionStringHerokuEnv);

$dbname = ltrim($parsed['path']. '/'); // PATH has prepended / at the beginning, it needs to be removed

// Connecting to the database

$conn = new PDO("{$parsed['scheme']}:host={$parsed};$dbname={$dbname};charset=utf8mb4", $parsed['user'], $parsed['pass'], [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

對于數(shù)據(jù)庫連接,您應(yīng)該始終使用 PDO 而不是 mysqli 驅(qū)動程序。PDO 允許您連接到幾乎任何數(shù)據(jù)庫,在 85% 的情況下無需重寫代碼。

不要忘記選項(xiàng)[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION],這將使您能夠捕獲任何錯(cuò)誤并根據(jù)應(yīng)用程序的需要進(jìn)行相應(yīng)的處理。

PDO 接受此連接字符串driver: host=DATABASE_HOST;dbname=DATABASE_NAME; charset=DEFAULT_CHARSET(use utf8 whenever you can)

了解更多信息parse_url: https: //www.php.net/manual/en/function.parse-url

了解有關(guān) PDO 的更多信息: https ://www.php.net/manual/en/class.pdo.php


查看完整回答
反對 回復(fù) 2023-09-22
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

<?php

$str = "mysql://g46w916ds134b8:639f463e@us-cdbr-east-03.cleardb.net/heroku_45fab1d19h35yetf?reconnect=true";

// If I correctly understanded 'mysql://login:passwd@host/dbname?some_params'

// data parsing from input string

$sp = explode('/', $str);

$sp1 = explode('@', $sp[2]);

$first_part_sp = explode(':', $sp1[0]);

$login = $first_part_sp[0];

$passwd = $first_part_sp[1];

$host = $sp1[1];

$dbname = explode('?', $sp[3])[0];

$connect_str = "mysql:host=$host;dbname=$dbname";

echo $connect_str." ".$login." ".$passwd;

// database access

$pdo = new PDO($connect_str, $user, $passwd);

?>


查看完整回答
反對 回復(fù) 2023-09-22
  • 2 回答
  • 0 關(guān)注
  • 124 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號