J'ai une fonction, qui est de retourner un tableau de lignes contenant des enregistrements d'une base de données, sélectionnés en fonction d'une requête LIKE. Je veux que cette requête soit une instruction préparée pour des raisons de sécurité. Apparemment, je ne peux pas utiliser les paramètres liés et la fonction de requête comme je le fais. Je ne suis pas sûr alors, de la façon de me garder une requête comme une instruction préparée, et de retourner les lignes que j'essaie de retourner.Récupérer des données à partir d'une instruction préparée
function getRowsByArticleSearch($searchString, $table, $max) {
$con = mysqli_connect("localhost", "x", "x", "x");
//global $con;
$recordsQuery = "SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME, date_format(str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), '%d %m %Y') AS shortDate FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '%?%' ORDER BY str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s')" . $max;
if ($getRecords = $con->prepare($recordsQuery)) {
$getRecords->bind_param("s", $searchString);
//$getRecords->execute();
echo "test if";
//$getRecords->bind_result($ARTICLE_NO, $USERNAME, $ACCESSSTARTS, $ARTICLE_NAME, $shortDate);
while ($getRecords->fetch()) {
$result = $con->query($recordsQuery);
$rows = array();
echo "test while";
while($row = $result->fetch_assoc()) {
$rows[] = $row;
}
}
return $rows;
} else {
print_r($con->error);
}
}
La boucle while n'est jamais entrée du tout.
pourquoi le exécutons en commentaire ?? – vladr
Dup de [problèmes d'instruction SQL like] (http://stackoverflow.com/q/618527/). – outis