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 Réponses :
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);
});
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.
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 .
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";
Avertissement: SQL Injection
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.