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.