在Windows Server 2012 R2和PHP 5.6.4上找不到PDO
问题描述:
我尝试在运行Apache 2.4.10和PHP 5.6.4的脚本的Windows Server 2102 R2上使用PDO进行连接,并得到错误“Class”PDO '尝试连接时找不到'。在Windows Server 2012 R2和PHP 5.6.4上找不到PDO
这里是代码调用
ini_set('display_errors', 'On');
require_once('c:/path/site_inc.php');
switch($_REQUEST['action']){
case 'getList':
getList();
break;
}
function getList(){
$dbh = dbConnect();
$pstmt = $dbh->prepare("SELECT * FROM announcements WHERE user=? ORDER BY startDate");
$pstmt->execute(array($_COOKIE['appsuname']));
echo json_encode($pstmt->fetchAll(PD0::FETCH_ASSOC));
}
function dbConnect(){
$DBH = new PDO(ccappConfig::mysqlDSN, ccappConfig::mysql_user, ccappConfig::mysql_pword);
return $DBH;
}
我已经测试,以确保PDO的连接可用以下方式
if(class_exists('PDO')){
echo "PDO Installed<br />";
} else {
echo "PDO NOT Installed<br />";
}
phpinfo();
这将返回“PDO安装”和phpinfo()函数确认pdo_mysql与mysql(正在被淘汰)和mysqli一起安装。
我不知道为什么会产生这个错误,并且php_pdo.dll已经从5.3版本中删除了,所以我不相信我错过了一个驱动程序,我也不相信这是由于phpinfo()在PDO标题下返回mysql和sqlite驱动程序都被启用。
我在这里丢失了什么,或者我的代码丢失了吗?
答
我发现这里的误差
function getList(){
$dbh = dbConnect();
$pstmt = $dbh->prepare("SELECT * FROM announcements WHERE user=? ORDER BY startDate");
$pstmt->execute(array($_COOKIE['appsuname']));
echo json_encode($pstmt->fetchAll(PD0::FETCH_ASSOC));
}
上述代码应
function getList(){
$dbh = dbConnect();
$pstmt = $dbh->prepare("SELECT * FROM announcements WHERE user=? ORDER BY startDate");
$pstmt->execute(array($_COOKIE['appsuname']));
echo json_encode($pstmt->fetchAll(PDO::FETCH_ASSOC));
}
第一嵌段为0(零),而不是O.
尝试在Stac上搜索k溢出一些问题,如http://stackoverflow.com/questions/7086859/pdo-drivers-no-value-in-windows – floor 2015-02-23 22:11:08
因为这是指“没有驱动程序”我有驱动程序,他们正在按我的问题解释运行。 – aallord 2015-02-23 22:14:00
对不起,我错过了最后的部分。我不太了解Windows服务器配置,但你有没有遵循这些指示http://php.net/manual/en/pdo.installation.php?你可能错过了PDO的特定数据库选项的部分 - > http://php.net/manual/en/pdo.drivers.php – floor 2015-02-23 22:18:31