Я создал страницу «заказов», которая должна быть довольно прямой, требуя для каждого цикла генерировать прошлые заказы из БД. В каждом цикле должен быть взрыв, чтобы отделить каждый элемент (,), затем другой взрыв, чтобы вытащить детали из каждого элемента (-). Мне было интересно, может ли кто-нибудь сказать мне, почему я получаю сообщение об ошибке «Warning: mysql_num_rows() ожидает параметр 1» в конце каждой итерации моего цикла foreach? Это особенно сбивает меня с толку, потому что код все еще работает, и я не думаю, что если ошибка была правдой.php взрывает массив продуктов, забрасывая ошибки
<?php
$sql = "SELECT * FROM orders WHERE store='$user'";
$res = mysql_query($sql);
$arrOrders = array();
while ($row = mysql_fetch_array($res)) {
array_push($arrOrders, $row);
}
?>
<table width="85%" align="center" border="0" cellpadding="5">
<?php if (count($arrOrders) > 0) { ?>
<?php foreach ($arrOrders as $key => $value) { ?>
<tr>
<td valign="top" style="font-weight: bold">
ID #<?=$value['id']?>
</td>
<td valign="top" style="font-weight: bold">
Status: <?=$value['status']?>
</td>
<td valign="top" style="font-weight: bold">
Order #<?=$value['order_ref']?>
</td>
<td align="left" valign="top" style="font-weight: bold">
<?php
$tmpProds = explode(',', $value['products']);
foreach ($tmpProds as $key2 => $value2) {
$tmpProdInfo = explode('-', $value2);
$sql2 = 'SELECT * FROM products_full WHERE id = ' . $tmpProdInfo[0];
$res2 = mysql_query($sql2);
if (mysql_num_rows($res2) > 0) { // THIS IS THE ROW THAT THE ERROR MESSAGE POINTS TO
echo $tmpProdInfo[1] + $tmpProdInfo[2] . ' x <a href="item_details.php?id=' . mysql_result($res2, 0, 'id') . '">' . mysql_result($res2, 0, 'alpha_code') . ' (' . trim(mysql_result($res2, 0, 'description')) . ')</a><br /><br />';
}
}
?>
</td>
</tr>
<tr>
<td width="100%" colspan="5" align="center">
<hr style="width: 100%" />
</td>
</tr>
<?php } ?>
<?php } else { ?>
<tr>
<td width="100%" align="center">
There are currently no complete orders.
</td>
</tr>
<?php } ?>
</table>
Спасибо заранее, я думаю, что я включил все, что относительно, но если что-то еще необходимо, сообщите мне.
Джо
Это выглядит, как если бы ваш запрос '$ sql2' не удается, и поэтому неверный результат ресурса передается в' mysql_num_rows() ' – billyonecan
Спасибо @deifwud, и, как это происходит в конце из каждого цикла было бы понятно, что это потому, что он получает пустую часть массива? Массив перед любым взрывом разделяется запятыми (например, 3-3-3,4-4-4,), но он также заканчивается запятой, так что мой первый взрыв также создает пустой массив? – JoeP
Вот что это было :) – JoeP