Jump to content
tochano

Verificar se tabela existe

Recommended Posts

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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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_*.

Edited by tochano

Share this post


Link to post
Share on other 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

Edited by 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.

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.