2014-01-15 2 views
0

21,22,22,22,23,23,23,26,27,27 등의 자바 스크립트 배열이 있습니다. 그것을 php 배열로 가져 와서 그 배열을 사용하여 mysql을 쿼리하여 배열의 값을 검색해야합니다.JSON을 사용하여 JavaScript 배열을 PHP 배열에 전달, PHP 배열을 사용하여 mysql 쿼리

여기 내 코드입니다. 게시 된 변환 된 배열로 요소를 다시로드하는 데 사용하고 있습니다. 이처럼 보였다 수도 배열을 변환

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

: 여기

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

내가 배열을 변환하기 위해 호출하고있는 자바 스크립트 함수입니다 22,22,22,22,23,23,23 , 23,26,27,28,28 반환되는 JSON $ _post 값은 다음과 같습니다. [22,22,22,22,23,23,23,23,26,27,28,28] 스택을 검색 한 후 이것에 대한 답은 배열을 가져 와서 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/>"; 
} 
} 

내가보기를 원하는 것은 mysql의 img 정보 일뿐입니다. 경고를 보내면 "경고 : mysql_fetch_assoc()은 매개 변수 1이 리소스가 될 것으로 예상하고 부울은 ...."내가 할 수 없다는 것을 알았습니다. 내가 도움이 될 수있는 형식으로이 배열을 얻는 방법을 생각해보십시오!

+0

'convertArray() '대신'deck_array.toString();' – sbeliv01

+1

PHP에서 json을 직접 처리하고 있습니다. ** **하지 마십시오. 이를 위해 [json_decode()] (http://php.net/json_decode)가 있습니다. –

+0

@Marc B - 처음에는 JSON이 전달되는 것처럼 보이지 않습니다. 'cid' 매개 변수의 쉼표로 구분 된 값입니다. – sbeliv01

답변

0
$esplodCId = explode(',', $queryTest1); 
^^^^^^^^^^--- explode returns an array 

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

귀하의 쿼리는 실제로 : 문자열 컨텍스트에 사용되는 배열이 그대로 단어 Array입니다

SELECT * FROM cards WHERE cid IN(Array) 

때문이다.

코드를 그대로 사용하면 원시 json 문자열에서 []을 제거하고 나머지 CSV 문자열을 쿼리에 채워 넣는 것이 좋습니다. 이것은 아직도 SQL 주입 공격에 취약입니다

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

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

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

하지만 좋겠 : 뭔가 더처럼이 넘어

, 당신은 당신이 PHP에 있어야한다 무엇 SQL injection attacks

에 취약 것입니다 적어도 적대적이지 않은 숫자 전용 데이터에 대해서만 작동합니다.

관련 문제