【问题标题】:assigning mysql array result to php variable将mysql数组结果分配给php变量
【发布时间】:2013-08-20 13:50:44
【问题描述】:

我正在尝试使用 API 向 mysql 表中的所有成员发送短信。

我可以发送短信。

但只使用表中的第一行,而我希望将短信发送到表中的所有记录。

我使用的代码是这样的:

$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 );
}

【问题讨论】:

    标签: php mysql arrays curl


    【解决方案1】:

    使用 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 );
    }
    

    【讨论】:

    • 我已经修改了上面的代码,但我仍然只得到第一行的结果。
    • 实际上代码运行正常。我认为 var_dump($result);exit;只显示一行结果,这给我的印象是代码没有遍历所有行。谢谢。
    【解决方案2】:

    你需要循环所有的行。

    类似:

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

    另外,不推荐使用 php mysql 扩展,请查看 mysqli 或 pdo。

    【讨论】:

      【解决方案3】:

      您正在使用 mysql_fetch_row,据我了解,它只返回一行(如果找到的话)。考虑改用 mysql_fetch_all

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多