J'ai lu ce post mais je ne le comprends vraiment pas .. Récupération du contexte correspondant à la recherche de texte intégral MySQL en PHP (et sécurité)
Comment afficher les données d'une requête MYSQL Full-Text en PHP avec Foreach .. Lorsque j'essaie de le faire, une seule ligne est récupérée en fait, lorsque j'essaie d'utiliser MYSQL Workbench, il génère 2 lignes.
Voici mon code:
if (isset($_GET["search"])) {
$s = htmlspecialchars($_GET["search"]);
$search = $conn->prepare("SELECT * FROM files WHERE MATCH (docu_title,description) AGAINST (:s)");
$search->bindParam(":s", $s);
$search->execute();
$find = $search->rowCount();
$search->fetch();
if ($find == 0) {
$searching = 0;
}
else{
$searching = 1;
}
}
mon code PHP
<?php
if (isset($searching)) {
if ($searching != 0) {
foreach($search as $sss)
{
echo "<td>" . $sss["docu_title"] . "</td>";
echo "<td>" . $sss["description"] . "</td>";
echo "<td><a href="downloads?id=" . $sss["id"] . "">download</a></td>";
}
}
}
?>
S'il vous plait, j'ai besoin de votre aide avec ceci.. je suis encore novice. Je vous remercie :)
Réponses:
0 pour la réponse № 1Avec chaque $ search-> fetch (), vous en récupérez unrangée et le curseur passe à la suivante, donc chaque fois que la deuxième rangée est remplie dans la table. Donc, supprimez $ search-> fetch () dans le premier code, et toutes les lignes seront affichées.
0 pour la réponse № 2
Enlever tout $find = $search->rowCount();
ordures.
Utiliser aussi while()
pour parcourir tous les enregistrements retournés au lieu de foreach()
. Utiliser foreach()
vous devez utiliser fetchAll () qui renvoie tous les enregistrements au lieu de fetch()
qui ne retourne que 1.
$search = $conn->prepare("SELECT * FROM files WHERE MATCH (docu_title,description) AGAINST (:s)");
$search->bindParam(":s", $s);
$search->execute();
while($sss =$search->fetch());
{
echo "<td>" . $sss["docu_title"] . "</td>";
echo "<td>" . $sss["description"] . "</td>";
echo "<td><a href="downloads?id=" . $sss["id"] . "">download</a></td>";
}