Предложение WHERE с массивом PHP-MYSQL
Я следующий код, но не работает, и я не вижу ошибки.
Мне нужно отобразить все 3 линии (123), которые находятся в $fetch['list_carac']
.
<?php
include 'conect.php';
$sql = "SELECT list_carac FROM select_carac WHERE id_produto = 1";
$exec = $con->query( $sql ) or exit( $con->error );
$fetch = mysqli_fetch_assoc($exec);
$fetch = str_replace( ",", "", $fetch);
echo($fetch['list_carac']);//aqui a saída é 123
foreach($fetch as $value){
$sql = "SELECT nome_carac FROM carac WHERE id_carac = $value";
$exec = $con->query( $sql ) or exit( $con->error );
$row = mysqli_fetch_assoc($exec);
echo $row["nome_carac"];
}
?>
Если я сниму foreach
и добавить id
вручную, он возвращает мне запись, которая находится в поле nome_carac
. В противном случае он не дает ошибку , но показывает только 1 выходecho($fetch['list_carac']);//aqui a saída é 123
.
1
1 answers
, уверены Ли вы, что в БД, всегда с запятыми просто так:
$sql = 'SELECT nome_carac FROM carac WHERE id_carac IN ('.$lista.')';
Применяется к вашему коду:
<?php
include 'conect.php';
$sql = 'SELECT list_carac FROM select_carac WHERE id_produto = 1';
$exec = $con->query( $sql ) or die( $con->error );
$fetch = mysqli_fetch_assoc($exec);
$lista = mysqli_real_escape_string( $con, $fetch['list_carac'] );
$sql = 'SELECT nome_carac FROM carac WHERE id_carac IN ( '.$lista.')';
$exec = $con->query( $sql ) or exit( $con->error );
while( $row = mysqli_fetch_assoc($exec) ){
echo $row["nome_carac"];
}
?>
Конечном Итоге, если список не только цифрой, нужно немного санитарной (с кавычками):
$caracteres = explode( ',', $fetch['list_carac'] );
foreach( $caracteres as $caractere ) {
$lista .= "'".mysqli_real_escape_string( $con, $caractere )."',";
}
$lista = rtrim( $lista, "," );
2
Author: Bacco, 2016-07-06 22:06:03