/ / Passer un tableau Javascript à un tableau PHP en utilisant JSON, Utiliser un tableau PHP pour interroger mysql [duplicate] - javascript, php, mysql, json

Passer du tableau Javascript à un tableau PHP à l'aide de JSON, utiliser un tableau PHP pour interroger mysql [dupliquer] - javascript, php, mysql, json

J'ai un tableau javascript qui ressemble à ceci, 21,22,22,22,23,23,23,26,27,27 etc. Je dois le mettre dans un tableau php puis utiliser ce tableau pour interroger mysql pour rechercher pour les valeurs du tableau.

Je voici mon code, je l'utilise pour recharger un élément avec le tableau converti posté.

$(function() {
$("#deckRefresh").click(function(evt) {
var teset = convertArray(deck_array);
$("#deckTest").load("core/m.deckcontainer.php?cid="+teset)
evt.preventDefault();
})
})

voici la fonction javascript que j'appelle pour convertir le tableau:

function convertArray(array){
var teset = JSON.stringify(array);
return teset;
}

Conversion du tableau qui aurait pu ressemblerceci: 22,22,22,22,23,23,23,23,26,27,28,28 La valeur JSON $ _post retournée est la suivante: [22,22,22,22,23,23,23,23,26,27,28,28] Après avoir cherché des réponses dans la pile, voici à quoi ressemble mon code pour prendre le tableau et interroger mysql:

if($_GET){

$queryTest = str_replace("[","",$_GET["cid"]);
$queryTest1 = str_replace("]","",$queryTest);
$esplodCId = explode(",", $queryTest1);


foreach ($esplodCId as $key => $var){
$esplodCId[$key] = (int)$var;
}

$sql = mysql_query("SELECT * FROM cards WHERE cid IN($esplodCId)");
while ($row = mysql_fetch_assoc($sql)){
echo "{$row["img"]}<br/>";
}
}

Tout ce que je veux voir pour l'instant, c'est juste les informations imgde mysql, quand j'exécute ceci, je reçois, "Attention: mysql_fetch_assoc () s'attend à ce que le paramètre 1 soit une ressource, booléen donné dans ...." format dans lequel je peux utiliser s'il vous plaît aider!

Réponses:

0 pour la réponse № 1
$esplodCId = explode(",", $queryTest1);
^^^^^^^^^^--- explode returns an array

$sql = mysql_query("SELECT * FROM cards WHERE cid IN($esplodCId)");
using an array in a string context---^^^^^^^^^^

Votre requête est en fait:

SELECT * FROM cards WHERE cid IN(Array)

car un tableau utilisé dans un contexte de chaîne est littéralement le mot Array.

Avec votre code tel quel, vous auriez mieux valu simplement retirer le [ et ] à partir de la chaîne json brute et en remplissant la chaîne CSV restante dans la requête.

Au-delà de cela, vous êtes vulnérable aux Attaques d'injection SQL

Ce que vous devriez avoir en PHP est quelque chose de plus:

$json = $_GET["cid"];
$ids = json_decode($json);

$csv = implode(",", $ids);

$sql = "SELECT .... WHERE cid IN ($csv)";

C'est ENCORE vulnérable aux attaques par injection SQL, mais cela "fonctionnerait au moins pour les données numériques non hostiles".