2013-08-20 6 views
0

Я пытаюсь отправить sms всем членам в таблице mysql с использованием API.присвоение результата mysql массиву переменной php

Я могу отправить 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)) { .... } 

также расширение MySQL PHP является устаревшим, взглянуть на MySQLi или PDO.

0

Вы используете mysql_fetch_row, который, насколько мне известно, возвращает только одну строку (если она найдена). Рассмотрите возможность использования mysql_fetch_all вместо

Смежные вопросы