Когда вы берете адрес b, вы получаете char *
. operator<<
интерпретирует это как строку C и пытается напечатать последовательность символов вместо своего адреса.
попробуйте cout << "address of char :" << (void *) &b << endl
.
[EDIT] Как сказал Томек, более подходящим для использования в этом случае является static_cast
, что является более безопасной альтернативой. Вот версия, которая использует его вместо C-стиля:
cout << "address of char :" << static_cast<void *>(&b) << endl;
MySQL - это база данных, а php использует расширения, такие как pdo_mysql
, для соединения PHP и MySQL. Во-первых, драйвер и расширения разные. Драйверы - mysqlnd
или mysqlnd
, а расширения - pdo_mysql
или nd_pdo_mysql
и т. Д. Сначала проверьте правильность установки драйверов.
Шаги для проверки расширений:
phpinfo()
, если вы видите, что pdo_mysql
включен. _mysql
в разделе расширений php. Проверьте, видите ли вы какое-либо другое добавленное расширение, например nd_pdo_mysql
. Если это так, то вы заметите конфликт. Вы должны сначала отключить его, а затем снова попытаться включить pdo_mysql
.