Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запрос, массив
Форумы портала PHP.SU » » Вопросы новичков » Запрос, массив

Страниц (1): [1]
 

1. event - 23 Января, 2015 - 14:36:43 - перейти к сообщению
Всем привет.
Есть такой запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. $result = $mysqli->query("SELECT * FROM links WHERE used = 'no' LIMIT 5") OR sqlerr(__FILE__, __LINE__, $mysqli->error);


Как можно все с ячейки link (из таблицы links, та что в запросе) загнать в массив, чтобы получилось

$urls = array("1 ссылка", "2 ссылка)...; и т.д.
(Добавление)
Попробовал как-то так, по дурацкому, но не пашет:

PHP:
скопировать код в буфер обмена
  1. $result = $mysqli->query("SELECT * FROM links WHERE used = 'no' LIMIT 2") or sqlerr(__FILE__, __LINE__, $mysqli->error);
  2.  
  3. while($row = $result->fetch_array()) {
  4.         $url_z .= '"link' . $row['link'] . '", ';
  5. }
  6.  
  7. $urls = array($url_z);
2. skiphog - 23 Января, 2015 - 14:56:32 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $url_z = array();
  2. while($row = $result->fetch_assoc()) {
  3.   $url_z[] = $row['link'];
  4. }
  5. var_dump($url_z);
3. event - 23 Января, 2015 - 15:06:03 - перейти к сообщению
skiphog, спасибо - работает.

Еще такую вопрос, как в этом массиве можно привязать к ссылке номер категории (он хранится в ячейке categoryid в таблице links)?
4. Sail - 23 Января, 2015 - 15:14:01 - перейти к сообщению
event пишет:
как в этом массиве можно привязать к ссылке номер категории (он хранится в ячейке categoryid в таблице links)?

Например, так:
PHP:
скопировать код в буфер обмена
  1. $url_z[] = array('link' => $row['link'], 'categoryid' => $row['categoryid']);

А лучше в запросе выбирать не все, а только требуемые поля, разбирать в массив - с параметром MYSQLI_ASSOC и тогда можно будет, ничтоже сумняшеся делать так:
PHP:
скопировать код в буфер обмена
  1. $url_z[] = $row;
5. event - 23 Января, 2015 - 15:22:10 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $result = $mysqli->query("SELECT link, categoryid FROM links WHERE used = 'no' LIMIT 10") or sqlerr(__FILE__, __LINE__, $mysqli->error);
  2.  
  3. $urls = array();
  4.     while($row = $result->fetch_assoc()) {
  5.          $urls = $row;
  6. }
  7.  
  8. var_dump($urls);
  9.  


Интересно почему выводит:

CODE (htmlphp):
скопировать код в буфер обмена
  1. array(2) { ["link"]=> string(60) "/11_14749_algoritm-bazovih-reanimatsionnih-meropriyatiy.html" ["categoryid"]=> string(1) "5" }
, должно вывести 10 таких записей...
6. skiphog - 23 Января, 2015 - 15:26:26 - перейти к сообщению
Уточните, что значит привязать?
- В массиве должны быть отдельно линки и категории?
- Или нужно сконкатенировать Линк и категории?
Что должно получится на выходе?

--
P.S.
PHP:
скопировать код в буфер обмена
  1. $urls = $row;
  2. // исправьте на
  3. $urls[] = $row;
7. event - 23 Января, 2015 - 15:30:27 - перейти к сообщению
skiphog, спасибо, заработало:

PHP:
скопировать код в буфер обмена
  1. $result = $mysqli->query("SELECT link, categoryid FROM links WHERE used = 'no' LIMIT 10") or sqlerr(__FILE__, __LINE__, $mysqli->error);
  2.  
  3. $urls = array();
  4.     while($row = $result->fetch_assoc()) {
  5.          $urls[] = $row;
  6. }
  7.  
  8. var_dump($urls);
  9.  


Не знаю как правильно сказать, если ссылка, и к ней должна привязываться ID из ячейки categoryid.

Потом такой foreach должен быть:

PHP:
скопировать код в буфер обмена
  1. foreach ($urls as $key => $value) {
  2.     echo "Ссылка: $key; Категория ссылки: $value<br />\n";
  3. }


Вот так задумано, но не получается(
8. Sail - 23 Января, 2015 - 15:37:44 - перейти к сообщению
event пишет:
Вот так задумано, но не получается(

А так:
PHP:
скопировать код в буфер обмена
  1. foreach ($urls as $value) {
  2.     echo "Ссылка: {$value['link']}; Категория ссылки: {$value['categoryid']}<br />".PHP_EOL;
  3. }
9. skiphog - 23 Января, 2015 - 15:38:39 - перейти к сообщению
--
10. event - 23 Января, 2015 - 15:39:38 - перейти к сообщению
Sail, работает, спасибо! Подмигивание Подмигивание
(Добавление)
Кстати, а можно например еще как-то одно значение передать из запроса, например ID?

 

Powered by ExBB FM 1.0 RC1