Boa tarde!
Alguém sabe me dizer como posso fazer um select com a clausula IN no MySqli?
EX: tenho um textarea e nele vou colar várias IDs, quero fazer um select from para todos esses IDs que estão nessa textarea, cujo estão separados por linha.
segue exemplo do meu código, porém ele só trás o resultado da query se eu inserir uma ID na textarea, se eu colocar mais de um ele não acha nada.
//pego dados da textarea
$teste = explode("\n\r", $_POST[‘comentario’]);
$text = str_replace("\r",",",$teste);
//query
$sql = “SELECT
CODIGO_VENDEDOR,NOME_VENDEDOR,SENHA_URA,DATA_EXPIRACAO
FROM senha
WHERE CODIGO_VENDEDOR in (’” . implode("\r",$text) . “’)”;
$results = mysqli_query($conexao,$sql);
while($row = mysqli_fetch_assoc($results)) { ?>
<?php echo $row["CODIGO_VENDEDOR"];?> |
<?php echo $row["NOME_VENDEDOR"];?> |
<?php echo $row["SENHA_URA"];?> |
<?php }
Bom dia!
Pensei no meu problema e resolvi da seguinte forma…não sei se é o melhor jeito pois acredito que se fosse buscar vários dados a performance seja afetada. Mas segue a resposta caso alguém precise:
$teste = explode("\r\n",$_POST[‘comentario’]);
foreach($teste as $teste2){
$sql = “SELECT
CODIGO_VENDEDOR,NOME_VENDEDOR,SENHA_URA,DATA_EXPIRACAO
FROM senha
WHERE CODIGO_VENDEDOR = (’$teste2’)”;
$results = mysqli_query($conexao,$sql);
while($row = mysqli_fetch_assoc($results)) { ?>
<?php echo $row["CODIGO_VENDEDOR"];?> |
<?php echo $row["NOME_VENDEDOR"];?> |
<?php echo $row["SENHA_URA"];?> |
<?php }}
?>
O ideal seria usar a função nl2br dessa forma ela puxa automaticamente o separador de linha (\r\n) que pode mudar dependendo do sistema operacional (vide documentação)… ou seja, \r\n é usado em windows, linux usa apenas \n, logo seu código iria “travar” se você mudasse de plataforma…
$ids = explode('<br>', nl2br($_POST['comentario']));
$ids = implode(',' $ids);
//...
$sql = 'SELECT CODIGO_VENDEDOR,NOME_VENDEDOR,SENHA_URA,DATA_EXPIRACAO FROM senha ';
if (!empty($ids)) {
$sql.= "WHERE CODIGO_VENDEDOR IN ($ids)";
}
Também evita laços e concatenações desnecessárias (minha opinião)…