Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

tochano

Verificar se tabela existe

Mensagens Recomendadas

tochano

Boa tarde,

Gostaria de saber como é que posso verificar se uma determinada tabela existe.

Sou iniciante em PHP, já tentei alguns exemplos que vi na internet mas sempre com erros... Bem ou então é da minha inexperiência.

Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tochano
<?php
 // Cria Ligação à Base de dados
$con=mysqli_connect("xxx","yyy","zzz","aaa");

// Verifica Ligação
if (mysqli_connect_errno($con))
 {
 echo "Falha na ligacao MySQL: " . mysqli_connect_error();
 }
 else {
echo "Ligacao OK!\n";}  


 $result = mysql_query("SHOW TABLES Like Clientes");
 $exists = mysql_num_rows($result) > 0 ? true : false;

 Echo $exists

 ?>
Pretendo saber se a tabela Ckientes existe.

Para tal, tento verificar o que retorna $exists mas dá erro:

Citação

Ligacao OK!
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /srv/disk6/1365826/www/xpto12345.atwebpages.com/index.php on line 16

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /srv/disk6/1365826/www/xpto12345.atwebpages.com/index.php on line 16

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /srv/disk6/1365826/www/xpto12345.atwebpages.com/index.php on line 17

Espero que tenha fornecido dados suficientes para que me possam ajudar.

Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tochano

A ligação ao mysql está a falhar, verifica os dados de ligação. Altera também as funções que te indiquei para o equivalente em mysqli_*.

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /srv/disk6/1365826/www/xpto12345.atwebpages.com/index.php on line 17

Continuo com o mesmo problema alterando para mysqli_*.

Editado por tochano

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson

A query em mysqli necessita de outro parâmetro o da ligação, e o nome da tabela necessita de estar entre ' ' ; coloca

  $result = mysqli_query($conexao, "SHOW TABLES Like 'xxxxxx'");
 $exists = mysqli_num_rows($result) > 0 ? true : false;

 echo $exists

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tochano

Boa tarde,

As vossas dicas tem vindo a ajudar imenso, Obrigado.

Contudo ainda continuo com um problema que não consigo resolver.

<?php

$tabela=Clientes;

if ($result = mysqli_query($con, "SHOW TABLES Like '$tabela'"))

{

echo "A tabela já existe <br />";

}

else

{

echo "A tabela não existe. <br />" .mysqli_error();

}

?>

Na Query se colocar '$tabela' entra na condição sempre como verdadeira, ou seja, independentemente da tabela existir ou não na base de dados, "diz" que a tabela existe. Se retirar as '' entra na condição como falso, ou seja, mesmo que crie a tabela, "diz" que não existe.

Onde estou a errar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

a query retorna sempre (porque o SQL é válido).

o que tens de verificar é se a query retornou mais do que um registo com a função mysqli_num_rows


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson

tens de fazer isto


 $result = mysqli_query($conexao, "SHOW TABLES Like '$tabela'");
 echo  ($exists = mysqli_num_rows($result) > 0)? 'existe' : 'não';


You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.