в следующем коде результат состоит из нескольких продуктов, каждый из которых имеет несколько столбцов:
$db = connect_db(); $sql = "SELECT * FROM Products"; $result = $db->query($sql); $ary = $result->fetch_array(MYSQLI_ASSOC); foreach($ary as $key => $element){ echo "key is $key, element is $element \n"; }
Но выход только итерации каждого столбца одного продукта:
key is id, element is 1 key is productCode, element is S10_1678 key is productName, element is 1969 Harley Davidson Ultimate Chopper key is productLineId, element is 5 key is productScale, element is 1:10 key is productVendor, element is Min Lin Diecast key is productDescription, element is This replica features working kickstand, front suspension, gear-shift lever, footbrake lever, drive chain, wheels and steering. All parts are particularly delicate due to their precise scale and require special care and attention. key is quantityInStock, element is 7933 key is buyPrice, element is 48.81 key is MSRP, element is 95.7
как я могу получить 2-мерный массив, который $array[0]['MSRP']
оценивает 95.7
Я считаю, что это сработает:
while ($ary = $result->fetch_array(MYSQL_ASSOC){ foreach($ary as $key => $element){ echo "key is $key, element is $element \n"; } }
Это означает, что в то время, когда есть больше записей, оно будет идти дальше, помещать их в массив и печатать их … Это основано на старых mysql_fetch_assoc () и mysql_fetch_array ().
Удачи.
если вы хотите достичь того, чего хотите, вам просто нужно сделать следующее:
while ($ary = $result->fetch_array(MYSQL_ASSOC){ foreach($ary){ $array[] = $ary; } }
теперь $array
имеет весь набор результатов, и таким образом $array[0]['MSRP']
– вернет желаемое значение.
$ary = $result->fetch_array(MYSQLI_ASSOC)
получает только одну запись за раз, которая была первой записью в вашем случае, вам нужно будет использовать некоторое while
while($ary = $result->fetch_array(MYSQLI_ASSOC)) //fetching one record at a time until end of record { foreach($ary as $key => $element){ echo "key is $key, element is $element \n"; } }
Вам нужно выполнить итерацию команды mysql_fetch, а не результаты этой команды.
Например, пример:
$db = connect_db(); $sql = "SELECT * FROM Products"; $result = $db->query($sql); while($entry = mysql_fetch_assoc($result)) { // $entry is an array you with the data of this DB-entry, eg echo $entry['MSRP']; }