/ / Przekazywanie tablicy JavaScript do tablicy PHP za pomocą JSON, Używanie tablicy PHP do zapytania mysql [duplikat] - javascript, php, mysql, json

Przekazanie tablicy JavaScript do tablicy PHP przy użyciu JSON, użycie tablicy PHP do zapytania mysql [duplicate] - javascript, php, mysql, json

Mam tablicę javascript, która wygląda następująco: 21,22,22,22,23,23,23,26,27,27 itd. Muszę wprowadzić ją do tablicy php, a następnie użyć tej tablicy do zapytania mysql w celu wyszukania dla wartości w tablicy.

Oto mój kod, używam go do przeładowania elementu z przesłanej tablicy przekonwertowanej.

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

oto funkcja javascript, którą wywołuję w celu konwersji tablicy:

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

Konwertowanie tablicy, która mogła wyglądaćto: 22,22,22,22,23,23,23,26,26,28,28 Zwrócona wartość JSON $ _post jest następująca: [22,22,22,22,23,23,23,23,26,28,228] Po przeszukaniu stosu odpowiedzi wygląda mój kod do pobierania tablicy i wysyłania zapytań do 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/>";
}
}

Na razie chcę tylko zobaczyć informacje imgz mysql, kiedy uruchamiam to, otrzymuję: „Ostrzeżenie: mysql_fetch_assoc () oczekuje, że parametr 1 będzie zasobem, boolean podany w ....” Nie mogę przez całe życie wymyślić, jak wprowadzić tę tablicę do format, w którym mogę używać proszę o pomoc!

Odpowiedzi:

0 dla odpowiedzi № 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---^^^^^^^^^^

Twoje zapytanie jest w rzeczywistości:

SELECT * FROM cards WHERE cid IN(Array)

ponieważ tablica używana w kontekście łańcuchowym jest dosłownie słowem Array.

Przy obecnym kodzie lepiej byłoby po prostu usunąć kod [ i ] z nieprzetworzonego ciągu Json i wpychanie pozostałego ciągu CSV do zapytania.

Poza tym jesteś podatny na Ataki typu SQL injection

To, co powinieneś mieć w PHP, to coś więcej:

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

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

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

To jest NADAL podatny na ataki typu SQL injection, ale „działa przynajmniej w przypadku nieprzyjaznych danych liczbowych.