2013-08-20 3 views
0

API를 사용하여 mysql 테이블의 모든 멤버에게 SMS를 보내려고합니다.PHP 변수에 mysql 배열 결과를 할당

SMS를 보낼 수 있습니다.

그러나 테이블의 첫 번째 행만 사용되는 반면 SMS는 테이블의 모든 레코드로 전송됩니다.

내가 사용하고 코드는 다음과 같다 :

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$result = mysql_query("SELECT name,mobile FROM members"); 
if (!$result) { 
echo 'Could not run query: ' . mysql_error(); 
exit; 
} 
$row = mysql_fetch_row($result); 
$mobile=$row[1]; 
$name=$row[0]; 

$request = ""; 
$param['mobileno'] = "91". $mobile; 
$param['message'] = "Dear $name (organisation name) wishes you a very very Happy Birthday"; 
$param['username'] = "username"; 
$param['password'] = "password"; 
$param['sendername'] = "sender"; 
foreach ($param as $key => $val){$request .= $key . "=" . urlencode($val);  
$request .= "&";}$request = substr($request, 0, strlen($request) - 1); 
$url = "http://smsapi" . $request; 
$ch = curl_init($url);curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
var_dump($result);exit; 
curl_close($ch); 

나는 답변의 제안에 따라 코드를 수정 한,하지만, 난 여전히 첫 번째 행으로 만 결과를 얻고있다.

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$result = mysql_query("SELECT name,mobile FROM members"); 
if (!$result) { 
echo 'Could not run query: ' . mysql_error(); 
exit; 
} 
while($row = mysql_fetch_row($result)) { 
$mobile=$row[1]; 
$name=$row[0]; 

$request = ""; 
$param['mobileno'] = "91". $mobile; 
$param['message'] = "Dear $name (organisation name) wishes you a very very Happy Birthday"; 
$param['username'] = "username"; 
$param['password'] = "password"; 
$param['sendername'] = "sender"; 
foreach ($param as $key => $val){$request .= $key . "=" . urlencode($val);  
$request .= "&";}$request = substr($request, 0, strlen($request) - 1); 
$url = "http://smsapi" . $request; 
$ch = curl_init($url);curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
var_dump($result);exit; 
curl_close($ch); 
} 

답변

0

while ($ row = mysql_fetch_row ($ result))를 사용하여 행을 반복합니다.

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$result = mysql_query("SELECT name,mobile FROM members"); 
if (!$result) { 
echo 'Could not run query: ' . mysql_error(); 
exit; 
} 
while($row = mysql_fetch_row($result)) { 
$mobile=$row[1]; 
$name=$row[0]; 

$request = ""; 
$param['mobileno'] = "91". $mobile; 
$param['message'] = "Dear $name (organisation name) wishes you a very very Happy Birthday"; 
$param['username'] = "username"; 
$param['password'] = "password"; 
$param['sendername'] = "sender"; 
foreach ($param as $key => $val){$request .= $key . "=" . urlencode($val);  
$request .= "&";}$request = substr($request, 0, strlen($request) - 1); 
$url = "http://smsapi" . $request; 
$ch = curl_init($url);curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
var_dump($result);exit; 
curl_close($ch); 
} 
+0

위와 같이 코드를 수정했으나 첫 번째 행에 대해서만 결과를 얻고 있습니다. – Joshi

+0

실제로 코드는 정상적으로 작동합니다. 나는 var_dump ($ result); exit;라고 생각한다. 코드가 모든 행을 반복하지 않는다는 느낌을주는 결과 행 하나만 보여주었습니다. 감사. – Joshi

0

모든 행을 반복해야합니다. 같은

뭔가 :

while($row = mysql_fetch_row($result)) { .... } 

또한 PHP는 MySQL의 확장이 사용되지는 mysqli 또는 PDO를 보라.

0

당신이 사용하는 mysql_fetch_row, 내 이해를 한 행을 반환합니다 (있는 경우) 찾을 수 있습니다. 대신 mysql_fetch_all 사용을 고려하십시오.