【发布时间】:2016-08-05 12:46:18
【问题描述】:
我有一段代码一直在 PHP 5.4 上运行,但在 PHP 5.6 上却没有运行。 PDO 的一些问题。我的代码在这里:
<?php
session_start();
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('session.cookie_httponly', 1);
ini_set('session.gc_maxlifetime', 999604800);
ini_set('session.cookie_lifetime', 999604800);
$baseurl = 'http://'.$_SERVER['SERVER_NAME'].'/';
$hostname = $_SERVER['SERVER_NAME'];
//if(!defined('PDO::ATTR_DRIVER_NAME')) { die('PDO unavailable'); }
class connect_data {
static $host = 'localhost'; //хост базы данных
static $username = 'aqq13807'; //логин базы данных
static $password = 'd,8p9\FP%kZDZ)R'; //пароль базы данных
static $db = 'aqq13807_d1'; //имя базы данных
}
class sql {
bla-bla-bla
}
$sql = new sql();
class pdo_connector {
//const DBNAME = 'aqq13807_d1'; //имя базы данных
//const DBLOGIN = 'root'; //логин базы данных
//const DBPASS = 'aq798803'; //пароль базы данных
const MINIMUM_PHP = '5.1.0';
private function check_version() {
if(version_compare(PHP_VERSION, self::MINIMUM_PHP, '<')) {
return 'На вашем сервере должна быть установлена версия PHP ' . self::MINIMUM_PHP . ' или выше для работы с коннектором PDO!';
}
}
public static function transaction($query = null, $op_type) {
self::check_version();
try {
$dbh = new PDO('mysql:dbname='.connect_data::$db, connect_data::$username, connect_data::$password, array( PDO :: ATTR_PERSISTENT => true ));
}
当我尝试“使用 PDO”时出现错误 -
警告:非复合名称“PDO”的 use 语句无效 在第 3 行的 bla-bla/testpdo.php 中
警告:session_start():无法发送会话缓存限制器 - 标头 已经发送(输出从第 2 行的 bla-bla/config.php 开始
我也尝试编写类似 \PDO 的东西,但它也不起作用。我也一直在尝试像这样通过 php.ini 加载 pdo
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20100525"
extension = "xcache.so"
extension = "pdo.so"
extension = "pdo_sqlite.so"
extension = "imagick.so"
extension = "pdo_mysql.so"
但它也不起作用,所以我检查了 phpinfo,它看起来像 PDO 的一切正常。
【问题讨论】:
-
你不需要
use PDO。它会自动包含在内。 -
我实际上并没有在该脚本中看到
use PDO..?! -
testpdo.php 的第 3 行是什么?
-
我试图在“class connect_data”之前的前几行之后“使用 PDO”
-
testpdo.php
<?php require_once './include/config.php'; $getVal = pdo_connector::transaction("SELECT * FROM drivers_profile", 'select'); var_dump($getVal);