마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

mysql -> php 데이터 꺼내올때

0 추천

푸시 전송할때 필요한 php를 만들고있습니다 ^^

 

mysql 에서  다수의regID를 php로 빼와서 보내주려 하는데 php초보라 

 

왜 글씨 큰곳 3곳이 정상작동 안하는지 모르겠습니다 ㅠ 맞게 작성한것 같은데.. 저거코드 없이 regID 1개 집어넣으면 잘됩니다.ㅠ 

 

 

$db_host = "127.0.0.1";
 $db_user = "push";
 $db_passwd = "push";
 $db_name = "gcm";
 $conn = mysqli_connect($db_host,$db_user,$db_passwd,$db_name);
 if (mysqli_connect_errno($conn)){
     echo "실패다 이눔아". mysqli_connect_errno();
 } else { echo"성공ㅋ";
 }
     

 
$query="SELECT * FROM gcm_table"; //꺼내오기 쿼리문
$result=mysqli_query($conn, $query); //쿼리문입력
$data = mysqli_fetch_array ($result);  //연관배열의 형태로 데이터를 변환

    
 
    // 헤더 부분
    $headers = array(
            'Content-Type:application/json',
            API key
            );
 
    // 푸시 내용, data 부분을 자유롭게 사용해 클라이언트에서 분기할 수 있음.
    $arr = array();
    $arr['data'] = array();
    $arr['data']['title'] = '푸시 테스트';
    $arr['data']['msg'] = '푸시 내용 ABCD~';
    $arr['registration_ids'] = array();
    $arr['registration_ids'] = $data[regid]; 
   
 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($arr));
    $response = curl_exec($ch);
    curl_close($ch);
 
    // 푸시 전송 결과 반환.
    $obj = json_decode($response);
 
    // 푸시 전송시 성공 수량 반환.
    $cnt = $obj->{"success"};
 
echo $cnt;  

 

 

껄껄앱 (1,910 포인트) 님이 2016년 2월 13일 질문

1개의 답변

0 추천
 
채택된 답변

$arr['registration_ids'] = $data[regid];  <--이부분을 

 

for($i=0;$row=mysql_fetch_assoc($reg_id);$i++){
                    $arr['registration_ids'][] = $row['reg_id'];
                }

요렇게바꿔보세여   mysql_fetch_assoc <--이걸쓰는이유는 한번에많은 푸시를 보낼때 서버에 부하를 덜어주기위해서입니다.

sadeva (21,550 포인트) 님이 2016년 2월 15일 답변
껄껄앱님이 2016년 2월 15일 채택됨
mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\... 라고 뜹니다 ㅠ mysql로 하면
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
라고 뜨네요 ;;
$data = $result->fetch_array(MYSQLI_ASSOC);
이렇게 한번 해보시겠어요?
예전에 mysqli를 사용할때
참조 형태로 사용했던거 같네요
오류는 안뜨는데 푸시 전송도 안되네요 ㅠ 결과값에 데이터베이스 연결성공 (성공ㅋ) 문자만 뜨네요 ㅠㅠ
그렇다면 db에 값이 없는것 같은데요..
흠.. 값은 분명히 있는데.. 제가 쓴 저코드에서  $arr['registration_ids'] = $data[regid];  이부분에서 $data 부분을 $data = $result->fetch_array(MYSQLI_ASSOC); 로 바꾸기만 하면되는거죠?
...