3
votes

Comment obtenir des produits de la table avec les identifiants exacts du tableau?

J'ai une table sql avec des produits et je ne sais pas comment récupérer plusieurs produits en utilisant array avec leurs identifiants

je sais comment récupérer tous ces produits et un seul en utilisant l'identifiant

JSON avec tous les produits de sql

 $sql = "SELECT * FROM PRODUCTS WHERE in_array("id", $ids, TRUE); 

JSON avec un produit utilisant son identifiant reçu dans le fichier js du hachage

 $sql = "SELECT * FROM PRODUCTS WHERE id='$id'"; 

Les deux ces extraits fonctionnent et maintenant j'ai un tableau avec des identifiants, mais je ne comprends pas comment récupérer uniquement leurs propriétés à partir de sql dans un fichier JSON.

J'ai un tableau avec des identifiants comme celui-ci ["6", "7" , "27"] et j'ai besoin de récupérer de sql PRODUCTS uniquement les articles avec ces identifiants. Si je comprends bien, je dois faire quelque chose avec cette ligne

function loadSingleGoods(){
    $id = $_POST['id'];
    $conn = connect(); 
    $sql = "SELECT * FROM PRODUCTS WHERE id='$id'";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        $row = mysqli_fetch_assoc($result);
        echo json_encode($row);

    } else {
        echo 0;
    }
}

J'ai essayé un tel code

function loadGoods(){
    $conn = connect(); 
    $sql = "SELECT * FROM PRODUCTS";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        $out = array();
        // output data of each row
        while($row = mysqli_fetch_assoc($result)) {
            $out[$row["id"]] = $row;
        }
        echo json_encode($out);

    } else {
        echo 0;
    }
    mysqli_close($conn);
}

mais ce n'est pas le cas travail


3 commentaires

jonsuh.com/blog/… utilisez ce lien pour plus de précisions


Avertissement: SQL Injection


Testez toujours vos requêtes via la console, le plan de travail ou SQL Studio pour les transactions SQL avant de les implémenter. Cela garantira que votre requête fonctionne en premier lieu. Ensuite, vous le convertissez dans la langue utilisée.


3 Réponses :


4
votes

Il serait utile que vous nous montriez également votre JavaScript, mais en supposant que vous alimentiez la sortie de json_encode () dans une seule variable, vous pouvez accéder à chaque produit comme suit:

console.log (json_variable [0]);

Cela devrait vous donner la première "ligne". Pour accéder à une cellule particulière, essayez ceci:

console.log (json_variable [0] ['column_name']);

Pour parcourir tout essayez les each () de jQuery:

$.each( json_variable, function( id, column_name) {
  console.log( id + ": " + column_name);
});


6 commentaires

Désolé, mais si je comprends bien, vous écrivez sur la manière de récupérer des données de json et j'ai besoin de recevoir des données de SQL en JSON. Je n'ai pas encore JSON. Je n'ai que des tableaux avec des identifiants comme ceci ["6", "7", "27"]


Si vous faites un var_dump ($ out); exit; , après la boucle while () , qu'obtenez-vous?


array (37) {↵ [1] => ↵ array (7) {↵ ["id"] => ↵ string (1) "1" ↵ ["name"] => ↵ string (16) "перчатки" ↵ ["img"] => ↵ chaîne (19) "img / other / hands.jpg" ↵ ["price"] => ↵ chaîne (3) "550" ↵ ["category"] => ↵ chaîne (5) "autre" ↵ ... etc


Super, c'est exactement comme prévu. Maintenant, de votre côté JS, comment «recevez-vous» la sortie de PHP? Vous pouvez peut-être partager votre code JS.


En fait, je l'obtiens en js et après avoir ajouté ces commandes, j'obtiens une erreur SyntaxError: jeton inattendu a dans JSON à la position 0 Mes js sont assez gros et désordonnés, donc je ne sais pas quoi montrer exactement ici


Montrez simplement le bit où la "sortie" du script PHP est reçue dans JS. Cela ne devrait être qu'une ligne ou deux.



3
votes

Vous pouvez analyser l'objet json en utilisant JSON.parse () et accéder à toute la valeur de l'objet.

var text = '{ "name":"John", "age":"39", "city":"New York"}';
JSON.parse(text, function (key, value) {  
    console.log(value); 
});

Ici, vous pouvez remplacer text avec votre variable json .

Si vous voulez en savoir plus sur json parse et comment accéder à la variable json dans js cliquez ici .


0 commentaires

0
votes

Vous pouvez créer votre requête avant de l'exécuter:

 $sql_array=array("6", "7", "27");
 $first_item=array_values($sql_array)[0];
 $sql="SELECT * FROM `PRODUCTS` WHERE `id`='$first_item'";
 $built_query="";
 foreach ($sql_array as $k => $id) {
   if ($k < 1) continue;
   $built_query=$built_query." OR `id` = '$id'";
}
$built_query=$sql.$built_query;

echo "$built_query";


1 commentaires

Avertissement: SQL Injection