Почему этот код pdo :: mysql разбивается на окна ???
<?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(); } ?>
в основном эта строка кода – это то, что приводит к сбою Apache.
$sql = "SELECT * FROM vCard";
Если я попытаюсь выбрать одно значение, например «id», это будет … когда я попытаюсь выбрать более одного значения «*», он сработает ??????
Правильный способ – перекомпилировать модули mysqli mysqli и pdo_mysql php с хорошими заголовками mysql (из источников mysql)
Но настройка хорошей среды для разработчиков сложна (Windows SDK, командная строка VC6 и все необходимые библиотеки)
На самом деле, есть версии протокола (вы можете видеть в заголовках mysql, файл с именем version.h).
Я делаю это для своего пакета WAMP под названием EWS – Easy Web Server для каждой новой версии
Единственное решение, которое я нашел:
Установите пакет LibMySQL.DLL FROM 5.0.51a (работающий с последней версией MySQL версии 5.1.44)
Хорошо, у меня очень плохое, но рабочее решение: p)
Откройте ext \ php_pdo_mysql.dll с помощью Hex-редактора
Найдите смещение «83 C3 50» 0x000024d5 (в php 5.2.12 vc6)
Заменить на 83 C3 "54"
Проблема заключается в плохом размере структуры … (struct pdo_column_data)
Я попытался исправить это в libmysql.dll, но этот сбой php_mysqli;)
То же самое происходит с Apache2 PHP 5.2.12 / LibMySQL 5.1.44 и 5.1.42 … с OllyDBG, мы видим, что сбой происходит в php_pdo_mysql
после анализа имени первого столбца … я вижу первый столбец «ID_Utilisateur» в стеке
рядом с "ext \ pdo_mysql \ mysql_statement.c"
LibMySQL – хороший (php dir), все здесь компилируется VC6 …
<?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