Neden windows bu PDO :: mysql kod kaza yapar?

4 Cevap php

Neden bu PDO :: windows mysql kod kazasında mi??

<?php
$username = "root";
$password = "";

try {
	$dsn = "mysql:host=localhost;dbname=employees";
	$dbh = new PDO($dsn, $username, $password);
	$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
	$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "Connected to database<br />" ;

$dbh->exec("DROP TABLE IF EXISTS vCard;");
$dbh->exec("DROP TABLE IF EXISTS emp;");

$table = "CREATE TABLE vCard(
	id INT(4) NOT NULL PRIMARY KEY, 
	firstName VARCHAR (255), 
	lastName VARCHAR (255), 
	office VARCHAR (255), 
	homePh VARCHAR (13), 
	mobilePh VARCHAR (13))";

$dbh->exec($table);

$dbh->beginTransaction();

$dbh->exec("INSERT INTO vCard(id, firstName, lastName, office, homePh, mobilePh)
	VALUES (4834, 'Randy', 'Lewis', 'SR. Front End Developer', '631-842-3375', '917-435-2245');");

$dbh->exec("INSERT INTO vCard(id, firstName, lastName, office, homePh, mobilePh)	
	VALUES (0766, 'Frank', 'LaGuy', 'Graphic Designer', '631-789-8244', '917-324-9897');");

$dbh->exec("INSERT INTO vCard(id, firstName, lastName, office, homePh, mobilePh)	
	VALUES (6684, 'Donnie', 'Dolemite', 'COO', '631-789-9482', '917-234-1222');");

$dbh->exec("INSERT INTO vCard(id, firstName, lastName, office, homePh, mobilePh)	
	VALUES (8569, '', 'McLovin', 'Actor', '631-842-9786', '917-987-8944');");

$dbh->commit();

echo "Data entered successfully<br/><br/>";

	$sql = "SELECT * FROM vCard"; // WHERE firstName = 'Donnie'";

	$results = $dbh->query($sql);

	foreach ($results as $id){
		echo "SSN: ". $id['id']." ";
		echo "First Name: ". $id['firstName']." ";
		echo "Last Name: ". $id['lastName']."<br/>";
	}

}	
catch (PDOException $e) {
	echo "Failed: " . $e->getMessage();
	$dbh->rollback();
}	

?>

temelde bu kod satırı çökmesine Apache tetikleyen nedir ..

    $sql = "SELECT * FROM vCard";

Ben 'id' gibi bir değer seçmek için çalışırsanız bu olacak ... Ben "*" bir değerden daha fazla seçmek çalıştığınızda çöküyor???

4 Cevap

Doğru yolu (mysql kaynaklardan) iyi mysql başlıkları ile mysql mysqli ve pdo_mysql php modülleri yeniden derlemek için

Ama iyi dev ortamı kurmak zordur (Windows SDK, VC6 komut satırı, ve gerekli tüm libs)

Aslında, protokol sürümleri (Eğer mysql başlıklarında version.h adında bir dosyayı görebilirsiniz) vardır.

Ben yaptığınız EWS adında benim WAMP paketi için - Kolay Web Sunucu, her yeni sürüm için

Ben buldum tek çözüm:

5.0.51a paket DAN libmysql.dll yükleyin (son 5.1.44 MySQL Version ile çalışan)

http://www.netfulvpc.fr/files/libmysql_dll.zip

Tamam, ben çok kötü bir çalışma var ama çözüm: p)

Bir Hex Editor ile açık ext \ php_pdo_mysql.dll

"83 C3 50" ara (php 5.2.12 VC6 içinde) 0x000024d5 ofset

83 C3 "54" ile değiştirin

Sorun kötü bir yapı boyutu ... (struct pdo_column_data)

Ben libmysql.dll bu düzeltmeye çalıştı ama o kaza php_mysqli ;)

Same here with Apache2 PHP 5.2.12 / LibMySQL 5.1.44 and 5.1.42 ... with OllyDBG, we can see the crash happens in php_pdo_mysql

İlk sütun adı incelemelerden sonra ... i yığını içinde ilk sütun "ID_Utilisateur" bakın

yakın "ext \ pdo_mysql \ mysql_statement.c"

Libmysql VC6 burada tüm derlenmiş, iyi bir (php dir) is ...

<?php

$dbh = new PDO('mysql:host=127.0.0.1;port=3306;dbname=uba_dev','root','');

echo "ok";
$dbh->exec('SET CHARACTER SET latin1');

echo "ok";
$stmt = $dbh->query("select * from utilisateurs"); <<< CRASH HERE

...

eip 002C249A at kazası