Arquivado
Este tópico foi arquivado e está fechado para novas respostas.
Melhorar performance na velocidade da consulta mysqli
Por
thiago riccieri, em PHP
Recommended Posts
-
Conteúdo Similar
-
Por ILR master
Tudo bem pessoal?
No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
$banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
$banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
while($busca= mysqli_fetch_array($banner)){
print $busca['cidade'].'<br>';
};
Alguém consegue me ajudar?
-
Por mkboy
Olá
Tenho uma situação onde tenho a mesma tabela em dois bancos de dados diferentes, em locais diferentes.
E quando atualizar uma tabela preciso atualizar a segunda no outro banco de dados também, é a mesma instrução SQL, os bancos / tabelas / registros são iguais.
Tentei isso, mas não funciona:
$endereco_banco = "186.000.00.01"; $usuario = "us01"; $senha = "010101"; $banco = "db01"; $conexao = new mysqli($endereco_banco,$usuario, $senha, $banco); $endereco_banco_externo = "186.000.00.02"; $usuario_externo = "us02"; $senha_externo = "020202"; $banco_externo = "db02"; $conexao_externo = new mysqli($endereco_banco_externo,$usuario_externo, $senha_externo, $banco_externo); //Atualiza no primeiro DB $conexao->query($str) or trigger_error($conexao->error." [$str]"); //Atualiza no segundo DB $conexao_externo->query($str) or trigger_error($conexao_externo->error." [$str]"); Podem me ajudar por favor.
-
Por Lísias de Castro
Ola. Estou criando um sistema de carrinho em php e pra isso preciso de um banco de dados. Pra não ficar chamando todas as funções a cada vez que a pagina atualiza, decidi usar a função mysqli_select_db, que verifica se o db existe e caso não exista, entre nas funções e crie. Porém, ao chamar a função quando o db não existe o php lança um "erro não capturado" e trava o layout. Se eu chamo o código sem o mysqli_select_db o código roda, porem chamando as funções a cada atualização. Poderia ser algum erro na api, ou tem uma nova forma pra pegar o tipo mysqli no php8?
Esse é o código que eu chamo pra salvar os dados:
```php
public function save($host,$user,$pass,$db){
$connection = mysqli_connect($host, $user, $pass);
if($connection){
if(mysqli_select_db($connect,$db)){
}
$dbCreator = "CREATE DATABASE IF NOT EXISTS ".$db;
if(mysqli_query($connection, $dbCreator)){
//echo "Database created successfully"."</br>";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($connection);
return 0;
}
$tableCreator = "CREATE TABLE IF NOT EXISTS `".$db."_tb` (".
"`name` VARCHAR(64) NOT NULL,".
"`price` REAL,".
"`amount` SMALLINT,".
"`barcode` BIGINT NOT NULL PRIMARY KEY,".
"`lot` VARCHAR(64) NOT NULL,".
"`manufactured` VARCHAR(10) NOT NULL,".
"`maturity` VARCHAR(10) NOT NULL".
");";
$insert = "INSERT INTO ".$db."_tb (`name`, `price`, `amount`, `barcode`, `lot`, `manufactured`, `maturity`) ".
"SELECT ".
"\"$this->name\",".
"\"$this->price\",".
"\"$this->amount\",".
"\"$this->barcode\",".
"\"$this->lot\",".
"\"$this->manufactured\",".
"\"$this->maturity\"".
" FROM dual WHERE NOT EXISTS(SELECT * FROM $db"."_tb WHERE barcode = '$this->barcode')LIMIT 1;";
if(mysqli_select_db($connection,$db)){
if(mysqli_query($connection,$tableCreator));//echo "Tabela ".$db."_tb criada com sucesso.<br/>";
if(mysqli_query($connection,$insert));//echo "Dados inseridos com sucesso em $db"."_tb<br/>";
}
mysqli_close($connection);
return 1;
}
return 0;
}
```
-
Por AdrianoAP
Pessoal estou tendo este erro quando eu fui passa a minha aplicação do mysql para o mysqli vejam o código -->>
<?php
$emitente = $mysqli->query("SELECT nome FROM emitente ORDER BY id ASC LIMIT 1");
while($ln = $emitente->fetch_array()){
echo $ln['nome'];
}?>
Devido á isso meu sistema não consegue fazer o login, se alguém puder me dar alguma dica eu agradeço.
-
Por lezão
Bom dia, galera!
Tudo bem com vcs?
Tenho uma tabela Itens com os campos Descrição e nome do produto, quando eu coloco no select.
Eu gostaria que me retorna-se, todos os nomes dos produtos e retornar apenas uma vez a Descrição.
Select com ORDER BY
"SELECT DISTINCT c.id, c.descricao, i.id_categoria, i.descricao_produto, i.id_item, i.nome_produto, i.imagem, i.preco, i.qntdade FROM tab_categoria AS c JOIN tab_itens AS i ON c.id = i.id_categoria WHERE c.id = i.id_categoria AND i.id_empresa = '$id_empresa' ORDER BY c.descricao" Select com GROUP BY, até da certo, mas retorna apenas um produto.
"SELECT DISTINCT c.id, c.descricao, i.id_categoria, i.descricao_produto, i.id_item, i.nome_produto, i.imagem, i.preco, i.qntdade FROM tab_categoria AS c JOIN tab_itens AS i ON c.id = i.id_categoria WHERE c.id = i.id_categoria AND i.id_empresa = '$id_empresa' GROUP BY c.descricao"
Veja como esta ficando do jeito que eu estou fazendo, com ORDER BY
Select_com_ORDER_BY
E com o GROUP BY
Select_com_GROUP_BY
-