/ / Passando a matriz Javascript para a matriz PHP usando JSON, usando a matriz PHP para consultar o mysql [duplicado] - javascript, php, mysql, json

Passando o JavaScript Array para um array PHP usando JSON, Usando PHP array para consultar mysql [duplicate] - javascript, php, mysql, json

Eu tenho uma matriz de javascript que se parece com isso, 21,22,22,22,23,23,23,26,27,27 etc. para os valores na matriz.

Aqui está o meu código, estou usando isso para recarregar um elemento com a matriz convertida postada.

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

Aqui está a função javascript que estou chamando para converter a matriz:

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

Convertendo a matriz que pode parecerthis: 22,22,22,22,23,23,23,23,26,27,28,28 O valor JSON $ _post retornado é este: [22,22,22,22,23,23,23,23,26,27,28,28] Depois de procurar respostas na pilha, é assim que meu código para pegar a matriz e consultar o mysql se parece:

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/>";
}
}

Tudo o que eu quero ver agora é apenas a informação imgdo mysql, quando eu executo isso, estou recebendo: "Aviso: mysql_fetch_assoc () espera que o parâmetro 1 seja um recurso, booleano fornecido em ...." formato no qual eu possa usar, por favor me ajude!

Respostas:

0 para resposta № 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---^^^^^^^^^^

Sua consulta é realmente:

SELECT * FROM cards WHERE cid IN(Array)

porque uma matriz usada no contexto de string é literalmente a palavra Array.

Com seu código como está, você seria melhor em simplesmente remover o [ e ] da string json bruta e inserir a string CSV restante na consulta.

Além disso, você está vulnerável a Ataques de injeção de SQL

O que você deve ter no PHP é algo mais como:

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

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

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

Isto é AINDA vulnerável a ataques de injeção de SQL, mas "funcionaria pelo menos para dados numéricos não hostis apenas.