2013-08-20 47 views
0

我想發送短信給所有的成員在使用API​​的mysql表中。分配mysql數組結果到php變量

我可以發送短信。

但只使用表中的第一行,而我希望短信發送到表中的所有記錄。

我使用的代碼是這樣的:

$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而不是