recherche

Maison  >  Questions et réponses  >  le corps du texte

Question de recherche sur les requêtes multi-colonnes utilisant PHP

<p>J'ai une question. Je dois interroger tout le texte contenant une sous-chaîne donnée en utilisant la méthode POST sur PHP. Par exemple, si je saisis un « a » ou un nombre comme « 1 » (un caractère et non un entier), dois-je trouver tout ce qui contient ce caractère ou cette sous-chaîne et vérifier chaque colonne du tableau si cela est possible ? J'ai essayé quelque chose comme ça, mais le code est un peu compliqué. </p> <pre class="brush:php;toolbar:false;"><?php si ($_SERVER["REQUEST_METHOD"] == "POST") { $usersearch = $_POST["usersearch"]; essayer { require_once "includes/dbh.inc.php"; $query = "SELECT * FROM tlattine OÙ tipologie LIKE :usersearch OU nom LIKE :usersearch OU caractéristiques LIKE :usersearch OR tabstyle LIKE :usersearch OU tabcolor LIKE :usersearch OU topstyle COMME :usersearch OU topcolor COMME :usersearch OU provenance LIKE :usersearch OU producteur LIKE :usersearch OR sku LIKE : recherche d'utilisateur COMMANDER PAR typologie, provenance, année, dimension;"; $stmt = $pdo->prepare($query); $stmt->bindParam(":usersearch", $usersearch); $stmt->exécuter(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); $pdo = nul ; $stmt = nul ; } catch (PDOException $e) { die("Échec de la requête : " . $e->getMessage()); } } autre{ header("Emplacement : ../index.php"); } ?>≪/pré> <p>J'ai déjà essayé d'utiliser '%:usersearch%' ou de combiner % sous n'importe quelle forme mais il semble qu'il me manque quelque chose, j'en suis absolument sûr mais je ne le trouve pas :(</p>
P粉242126786P粉242126786527 Il y a quelques jours484

répondre à tous(1)je répondrai

  • P粉793532469

    P粉7935324692023-07-27 09:13:59

    En regardant votre requête, j'ai remarqué que vous avez utilisé le paramètre : usersearch plusieurs fois.

    Mentionné dans la documentation PHP :

    Je préfère éviter d'activer le mode d'emprunt d'identité et plutôt remplacer l'espace réservé nommé par un espace réservé positionnel (utilisez '?' au lieu de ':usersearch'), puis utilisez


    $stmt->bindParam(1, $usersearch, PDO::PARAM_STR);
    $stmt->bindParam(2, $usersearch, PDO::PARAM_STR);
    $stmt->bindParam(3, $usersearch, PDO::PARAM_STR);
    // and so on

    Une dernière chose, si vous interrogez pour que la colonne contienne la variable $usersearch, vous devriez probablement ajouter % au début et à la fin de la chaîne.

    $usersearch = "%" . $_POST["usersearch"] . "%"

    répondre
    0
  • Annulerrépondre