J'ai un code vraiment funky. Comme vous pouvez le voir dans le code ci-dessous, j'ai une série de filtres que j'ajoute à la requête. Maintenant serait-il plus facile d'avoir plusieurs requêtes, avec son propre ensemble de filtres, puis de stocker les résultats dans un tableau, ou d'avoir ce désordre?PHP: requêtes SQL multiples vs un monstre
Quelqu'un at-il une meilleure solution à ce désordre? Je dois être en mesure de filtrer par mot-clé et numéro d'article, et il doit être capable de filtrer en utilisant plusieurs valeurs, ne sachant pas lequel est lequel.
//Prepare filters and values
$values = array();
$filters = array();
foreach($item_list as $item){
$filters[] = "ItemNmbr = ?";
$filters[] = "ItemDesc LIKE ?";
$filters[] = "NoteText LIKE ?";
$values[] = $item;
$values[] = '%' . $item . '%';
$values[] = '%' . $item . '%';
}
//Prepare the query
$sql = sprintf(
"SELECT ItemNmbr, ItemDesc, NoteText, Iden, BaseUOM FROM ItemMaster WHERE %s LIMIT 21",
implode(" OR ", $filters)
);
//Set up the types
$types = str_repeat("s", count($filters));
array_unshift($values, $types);
//Execute it
$state = $mysqli->stmt_init();
$state->prepare($sql) or die ("Could not prepare statement:" . $mysqli->error);
call_user_func_array(array($state, "bind_param"), $values);
$state->bind_result($ItemNmbr, $ItemDesc, $NoteText, $Iden, $BaseUOM);
$state->execute() or die ("Could not execute statement");
$state->store_result();
Pourrais-je également utiliser MATCH .. AGAINST pour effectuer une recherche par numéro d'article? Parce que malheureusement les numéros d'article ne sont pas seulement des chiffres pour une raison abandonnée ... – MackDaddy