PHP MySQL Arrays - PullRequest
       12

PHP MySQL Arrays

0 голосов
/ 24 декабря 2011

Я не уверен, что понимаю, как работают массивы в MySQL. У меня была таблица, в которой есть 1 столбец с именем «id», в каждой строке есть случайное числовое значение для «id». (строки упорядочены по дате, когда они были внесены в таблицу (другой столбец с именем TimeStamp)

Так что я могу иметь:

//row#: id#
row1: 5
row2: 17
row3: 2
row4: -54
row5: 18

Теперь я могу переставить их по "ORDER BY" и расположить их в порядке возрастания по "id"

$table1 = mysql_query("SELECT * FROM table1 ORDER BY id ASC") or die(mysql_error()); 
$orderedArray = mysql_fetch_array($table1);

Так что теперь у меня есть массив ($ orderArray) .. Так должно быть, верно?:

row4: -54
row3: 2
row1: 5
row2: 17
row5: 18

Столбец «id» теперь в порядке вместо числа после строки (в моем случае вы бы увидели постдату (timestamp) вместо row1 или row3, но я просто использовал систему именования «row #», чтобы сделать пример проще ...

Итак, у меня есть этот массив ... теперь допустим, что я хотел напечатать третью строку моего тематического массива ORDER BY (иначе говоря, строку в моей исходной таблице с третьим по величине значением в столбце "id" ...) Каким будет мой код?

Я предположил что-то вроде этого (но это не сработало):

$row3id = $orderedArray['id', 3];
print $row3id;

Кто-нибудь знает? Спасибо!

Ответы [ 3 ]

1 голос
/ 24 декабря 2011

mysql_fetch_array() вернет одну строку, которая является первой. Для получения всех из них вы должны сначала выполнить цикл while:

while($row = mysql_fetch_array($query)){
  $id[] = $row['id'];
}
// Use
$result = $id[2];

В этом случае массив будет работать. И если вы хотите получить третий, вы можете использовать mysql_fetch_row() Я думаю.

1 голос
/ 24 декабря 2011

Мое решение: ваш SELECT находится в массиве $ orderArray если вы хотите именно третий ряд:

$ я = 0;

while($orderedArray=mysql_fetch_array($table1))

{

if ($ i == 2) {echo $ orderArray [1]; } $ Я ++;

}

не самый лучший, но работает для третьего ряда:)

1 голос
/ 24 декабря 2011

Попробуйте:

while ($row = mysql_fetch_array($table1)) {
    $orderedArray[] = $row;  
}

$row3id = $orderedArray[2];

Массивы PHP начинаются с 0 в качестве первого индекса.

Кроме того, mysql_fetch_array имеет необязательный параметр result_type, который позволяет вам решать, как вы хотите, чтобы вашрезультаты вернулись.По умолчанию используется значение MYSQL_BOTH, которое используется в вашем случае, поскольку вы не определили result_type, поэтому у вас есть результат массива с ассоциативными и пронумерованными индексами.

Подробнее см. Здесь:

http://php.net/manual/en/function.mysql-fetch-array.php

...