Задать вопрос

Как в PHP запись цикла for() в массив и вывод его переменную?

С помощью этого вытягиваю данные из mysql
$result=mysql_query("SELECT id,address,phone,delivery_id FROM s_orders WHERE status = '0' AND paid = '1' AND delivery_id != '5' ORDER BY phone");

C помощью этого могу вывести данные на экран
echo "<table border=1>";
 for($i=0;$i<$n;$i++) echo "<tr><td>",mysql_result($result,$i,"id"),"</td><td>",mysql_result($result,$i,"address"),"</td><td>",mysql_result($result,$i,"phone"),"</td></tr>";
 echo "</table>";
 mysql_close($db);

Как все эти данные добавить или в массив или в переменную что б использовать в другой операции а конкретно используя api отправки смс
Пример:
$addrbook_id = "2321321";
$res = $Stat->createCampaign("testName",
            "Адреса заказов: $fst",
            $addrbook_id, "", 0, 0, 0, "");

Как вместо переменной $fst вывести цикл из данными или массив
Спасибо
  • Вопрос задан
  • 9064 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
alexclear
@alexclear
A cat
Должно быть как-то так:

$rows=array();
$result=mysql_query("SELECT id,address,phone,delivery_id FROM s_orders WHERE status = '0' AND paid = '1' AND delivery_id != '5' ORDER BY phone");
for($i=0;$i<$n;$i++) { 
   $row=array("id" => mysql_result($result,$i,"id"),
          "address" => mysql_result($result,$i,"address"),
          "phone" => mysql_result($result,$i,"phone")
        );
   array_push($rows, $row);
}
mysql_close($db);


В $rows будет массив ассоциативных массивов результатов
$rows[0] - первый результат, $rows[0]["id"] - id первого результата

Новый вариант:

$addrs=array();
$result=mysql_query("SELECT id,address,phone,delivery_id FROM s_orders WHERE status = '0' AND paid = '1' AND delivery_id != '5' ORDER BY phone");
for($i=0;$i<$n;$i++) { 
   array_push($addrs, mysql_result($result,$i,"address"));
}
mysql_close($db);


Вот теперь можно сделать:

$Stat->createCampaign("testName",
"Адреса заказов: $addrs",
$addrbook_id, "", 0, 0, 0, "");


Если там функция ожидала массив адресов, то вот он ей, массив адресов.

Еще дополнение:

$Stat->createCampaign("testName",
"Адреса заказов: " . implode(',', $addrs),
$addrbook_id, "", 0, 0, 0, "");


Теперь эта функция, которая ожидала строку, получит строку, а не массив
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну начну с того что mysql_query deprecated, то есть не используйте ради бога вы это расширение. Только mysqli или pdo.

Ну и закончу тем, что нужно сначала собрать данные в массивчик (привемы есть в документации) а потом с этим массивчиком делать что угодно. Например:

$addresses = array_column($rows, 'address');
Ответ написан
KorsaR-ZN
@KorsaR-ZN
Если вы используете mysql_*, что уже не поддерживается и принято не безопасным.
то есть специальная функция - mysql_fetch_assoc

пример:
$result = mysql_query("SELECT id,address,phone,delivery_id FROM s_orders WHERE status = '0' AND paid = '1' AND delivery_id != '5' ORDER BY phone");

if ($result) {
   while ($row = mysql_fetch_assoc($result)) {
      // Обработка строк...
   }
}


А вообще переходите на PDO
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы