Я рассматриваю вопрос об изменении некоторого 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
равно true, и нет, если значение равно false С новой копией 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 для поддержки обоих методов запроса к базе данных?