【发布时间】:2016-12-28 17:25:12
【问题描述】:
现在,我有点沮丧,我希望有人可以帮助我并为我指明正确的方向。
我有一个“旧”项目,它使用 mysql 语句连接到数据库等。
在这个项目中,我有以下内容:
一个包含
的索引文件*
* load configuration and connect to database
*/
$projectConfiguration = new projectConfiguration();
$dbconnect = $projectConfiguration->connect($projectConfiguration->databaseHost, $projectConfiguration->databaseName, $projectConfiguration->databaseUser, $projectConfiguration->databasePass);
// load controller
$ReqMod = FatFramework\Functions::getRequestParameter("mod");
if (!$ReqMod) {
$ReqMod = FatFramework\Functions::getRequestParameter("controller");
}
$module = ($ReqMod) ? $ReqMod : 'default';
在这种风格中,我在类中调用视图和操作,例如 SaveAction()
使用 mysql 总是很容易在控制器调用的模型中使用这个数据库连接,比如
public function loadCustomersList($sAdditionalWhere = false)
{
$sQuery = "SELECT * FROM customers WHERE 1 ";
if ($sAdditionalWhere) {
$sQuery .= "AND " . $sAdditionalWhere . " ";
}
$sQuery .= "ORDER BY company";
$sql = mysql_query($sQuery);
while (($customer = mysql_fetch_object($sql)) != false) {
$aCustomers[] = $customer;
}
return $aCustomers;
}
我想完全折射这个项目并使用 PDO。在过去的 4 个小时里,我一直在尝试寻找解决方案,但我无法弄清楚如何让它发挥作用。
我认为我不需要额外的 dbconnect 类,因为 PDO 本身就是一个类,对吗?
在新的索引文件中,我尝试了以下操作:
$db = new database();
try{
$dbc = new PDO($db->get_DbConSettings());
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e)
{
echo 'Verbindung fehlgeschlagen: '.$e->getMessage();
}
但是有了这个 $dbc 将在控制器或模型中不可用。有没有办法让它在那里可用?如果不是,最好的解决方案是什么? 我必须在每个模型中建立数据库连接吗?
我遇到的另一个问题是: $db->get_DbConSettings() 在 $dbc = 新的 PDO
回馈
'mysql:host=127.0.0.1; dbname=c1virtbkk', 'root', '123'
($dbc = new PDO('mysql:host=127.0.0.1; dbname=c1virtbkk', 'root', '123');)
我无法连接到数据库。我得到以下信息:
Verbindung fehlgeschlagen: could not find driver
如果我不使用 $db->get_DbConSettings 并手动输入所需的信息,我不会收到任何错误并且可以进行查询。有什么提示吗?
非常感谢您的帮助。
提前致谢!
标记
【问题讨论】:
标签: mysql pdo connection