Я рассматриваю возможность изменения кода PHP для использования PDO
для доступа к базе данных вместо mysqli
(поскольку синтаксис PDO имеет больше смысла для меня и является агностиком базы данных). Для этого мне нужно, чтобы оба метода работали, пока я делаю переход.
Моя проблема заключается в следующем: до сих пор один или другой метод приведет к сбою Apache .
Сейчас я использую XAMPP в Windows XP и PHP версии 5.2.8. Mysqli отлично работает, и так получается:
$dbc = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); echo 'Connected to database'; $sql = "SELECT * FROM `employee`";
Но эта строка приводит к сбою Apache:
$dbc->query($sql);
Я не хочу переделывать всю установку Apache или XAMPP, но я бы хотел, чтобы PDO работал. Поэтому я попробовал обновить libmysql.dll
отсюда , так как oddvibes рекомендуется здесь . Это заставило мой простой запрос PDO
работать, но затем mysqli
запросы разбили Apache.
(Я также попробовал следующее предложение, чтобы обновить php_pdo_mysql.dll
и php_pdo.dll
, без каких-либо последствий).
Я создал этот тестовый скрипт для сравнения PDO и mysqli. Со старой копией libmysql.dll
он $use_pdo
если $use_pdo
является истинным и не является, если он является ложным. С новой копией libmysql.dll
все наоборот.
if ($use_pdo){ $dbc = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); echo 'Connected to database<br />'; $sql = "SELECT * FROM `employee`"; $dbc->query($sql); foreach ($dbc->query($sql) as $row){ echo $row['firstname'] . ' ' . $row['lastname'] . "<br>\n"; } } else { $dbc = @mysqli_connect($hostname, $username, $password, $dbname) OR die('Could not connect to MySQL: ' . mysqli_connect_error()); $sql = "SELECT * FROM `employee`"; $result = @mysqli_query($dbc, $sql) or die(mysqli_error($dbc)); while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { echo $row['firstname'] . ' ' . $row['lastname'] . "<br>\n"; } }
Что нужно Apache для поддержки обоих методов запроса к базе данных?