Esta seção possui questões comuns sobre a relação entre o PHP e bases de dados. Sim, o PHP pode acessar virtualmente qualquer base de dados disponível atualmente.
Em máquinas Unix você pode utilizar o PDO_ODBC ou o Unified ODBC API.
Em máquinas Windows você também pode utilizar PDO_SQLSRV ou SQLSRV.
Veja também a questão seguinte.
Sim. Você já possui todas as ferramentas que precisa se estiver rodando em ambiente Windows 9x/Me, ou NT/2000, onde você pode usar o driver ODBC e os drivers ODBC para bases de dados Microsoft Access.
Se você estiver rodando PHP em uma box Unix e quiser conversar com Microsoft Access em uma box Windows será necessário instalar os drivers ODBC para Unix. » OpenLink Software possui drivers para sistemas Unix-based que podem fazer isto.
Outra alternativa é usar um servidor SQL server que possua drivers Windows ODBC e os utilize para armazenar os dados, que você pode então acessar através do Microsoft Access (usando ODBC) e PHP (usando os drivers já existentes), ou usando um formato de arquivo intermediário que Microsoft Access e PHP consigam entender, como arquivos comuns ou bases de dados dBase. Neste ponto Tim Hayes, da OpenLink Software, escreve:
Usar outra base de dados como intermédio não é uma boa ideia, quando você pode usar o ODBC do PHP diretamente à base de dados - i.e. com drivers fornecidos pela OpenLink. Se você precisar utilizar um arquivo intermediário, a OpenLink lançou o Virtuoso (uma engine de base de dados virtual) para NT, Linux e outras plataformas Unix. Por favor visite » nossa página para um download gratuito.
Uma opção que se mostrou funcional é utilizar MySQL e seus drivers MyODBC no Windows e sincronizar as bases de dados. Steve Lawrence disse:
Truques e Dicas:
Existem três extensões MySQL, como descrito na seção Escolhendo uma API MySQL. A antiga API não deve ser utlizada, pois está obsoleta desde o PHP 5.5.0 e foi movida para o PECL a partir do PHP 7.0.0. É fortemente recomendado escrever novos códigos utilizando mysqli ou PDO_MySQL.
Scripts de migração não estão disponíveis neste momento, porém a API mysqli possui tanto o formato procedural quanto o orientado a objetos, sendo que o formato procedural é similar ao do ext/mysql.
Não é possível misturar as extensões. Então, por exemplo, passar uma conexão mysqli para PDO_MySQL ou ext/mysql não vai funcionar.
Sim. Sempre haverá suporte para MySQL no PHP de um jeito ou de outro. A única mudança no PHP 5 é que não virá mais embutida a biblioteca cliente. Algumas das razões:
A maioria dos sistemas atulamente já possuem a biblioteca instalada.
Dado o item acima, ter múltiplas versões da biblioteca pode ser problemático. Por exemplo, se você ligar mod_auth_mysql à uma versão e o PHP à outra e então habilitar ambas no Apache, você vai receber um lindo e gordo crash. Além disso, a versão trazida no PHP nem sempre funcionava bem com a versão instalada no servidor. O sintoma mais óbvio disto é o desacordo sobre onde encontrar o arquivo mysql.socket no domínio Unix.
A manutenção foi de alguma forma negligenciada e foi caindo mais e mais atrás da versão lançada.
Versões futuras da biblioteca estão sob licença GPL e, portanto, não conseguimos achar uma forma de realizar upgrades visto que não podemos trazer uma biblioteca GPL em um projeto licença estilo BSD/Apache-style. Interromper a biblioteca no PHP 5 pareceu ser a melhor opção.
Na verdade isto não vai afetar tanta gente. Usuários Unix, ao menos os que sabem o que estão fazendo, tendem a compilar PHP utilizando a biblioteca libmysqlclient presente no sistema simplesmente adicionando a opção --with-mysql/usr quando compilando o PHP. Usuários Windows deverão habilitar a extensão php_mysql.dll dentro do php.ini. Para mais detalhes, veja a Referência para MySQL para instruções de instalação. Certifique-se também de que o libmysql.dll está disponível na variável de sistema PATH. Para mais detalhes em como fazer, leia o FAQ sobre Como eu adiciono meu diretório PHP no PATH do Windows?. Por conta de o libmysql.dll (e muitos outros arquivos relacionados a PHP) existirem na pasta PHP, você vai querer adicionar a pasta do PHP na variável PATH de seu sistema.
Você está tentando utilizar um result identifier que tem valor 0. O valor 0 indica que sua consulta falhou por algum motivo. Você deverá verificar erros depois de submeter uma consulta e antes de tentar utilizar o result identifier retornado. A forma correta de fazer isto é semelhante à que segue:
<?php
$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
echo mysql_error();
exit;
}
?>
<?php
$result = mysql_query("SELECT * FROM tables_priv")
or die("Bad query: " . mysql_error());
?>