tochano Posted April 28, 2013 at 01:44 PM Report #505058 Posted April 28, 2013 at 01:44 PM 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.
yoda Posted April 28, 2013 at 02:45 PM Report #505068 Posted April 28, 2013 at 02:45 PM $result = mysql_query("SHOW TABLES LIKE 'nome_da_tabela'"); $exists = mysql_num_rows($result) > 0 ? true : false; 1 Report before you post, what have you tried? - http://filipematias.info sense, purpose, direction
tochano Posted April 28, 2013 at 08:04 PM Author Report #505093 Posted April 28, 2013 at 08:04 PM <?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.
yoda Posted April 28, 2013 at 10:04 PM Report #505105 Posted April 28, 2013 at 10:04 PM (edited) 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_*. Edited April 28, 2013 at 10:06 PM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction
tochano Posted April 28, 2013 at 10:44 PM Author Report #505114 Posted April 28, 2013 at 10:44 PM (edited) 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 April 28, 2013 at 10:45 PM by tochano
N3lson Posted April 29, 2013 at 03:59 AM Report #505135 Posted April 29, 2013 at 03:59 AM (edited) 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 April 29, 2013 at 04:06 AM 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.
yoda Posted April 29, 2013 at 04:01 AM Report #505136 Posted April 29, 2013 at 04:01 AM (edited) if ($result = mysqli_query("SHOW TABLES Like Clientes")) { echo 'existe'; } else { echo 'não existe'; } Edited April 29, 2013 at 04:02 AM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction
tochano Posted April 29, 2013 at 07:30 PM Author Report #505228 Posted April 29, 2013 at 07:30 PM 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?
HappyHippyHippo Posted April 29, 2013 at 07:48 PM Report #505230 Posted April 29, 2013 at 07:48 PM 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 Portugol Plus
N3lson Posted April 30, 2013 at 04:18 AM Report #505268 Posted April 30, 2013 at 04:18 AM 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.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now