Ben (PDO sözdizimi bana daha mantıklı ve veritabanı-agnostik olduğu için) PDO
veritabanı erişimi yerine mysqli
için kullanmak bazı PHP kodunu değiştirmeyi düşünüyorum. Bunu yapmak için, ben değişiminin yapıyorum iken çalışmaya her iki yöntem gerekiyordu.
Benim sorunum şu: so far, either one or the other method will crash Apache.
Sağ şimdi Windows XP'de XAMPP kullanarak ve PHP Sürüm 5.2.8 ediyorum. Mysqli çalışıyor ve böylece bu yapar:
$dbc = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
echo 'Connected to database';
$sql = "SELECT * FROM `employee`";
Ama bu çizgi Apache kazasında yapar:
$dbc->query($sql);
Ben tüm Apache veya XAMPP kurulumu yinelemek istemiyorum, ama PDO çalışmak için ben isterim. Bu yüzden oddvibes tavsiye edildiği gibi, libmysql.dll
here ikinci güncelleme here çalıştı. O benim basit PDO
sorgu çalışma yapılmış, ancak daha sonra mysqli
sorguları Apache çöktü.
(Ben de hiçbir etkisi, php_pdo_mysql.dll
ve php_pdo.dll
güncellemek için, ondan sonra öneri denedim.)
Test Case
Ben mysqli'nin vs PDO'yu karşılaştırmak için bu test komut dosyası oluşturulur. $use_pdo
doğruysa ve bu düzmece değilse eski kopyası ile libmysql.dll
, çöker. Yeni kopya ile libmysql.dll
, bu tam tersi.
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";
}
}
What does Apache need in order to support both methods of database query?