الاستعلام ينكسر. كيفية تخطي الصفوف PHP
سؤال
لدي سؤال ربما عرجاء لكنه جعلني عالقًا لدي استعلام DB
$query_Recordset10 = "SELECT * FROM products
WHERE razdel='mix' AND ID='$ID+1' AND litraj='$litri' ORDER BY ID ASC";
$Recordset10 = mysql_query($query_Recordset10, $victor) or die(mysql_error());
$row_Recordset10 = mysql_fetch_array($Recordset10);
$totalRows_Recordset10 = mysql_num_rows($Recordset10);
هذا هو الاستعلام للمنتج التالي في السطر القائم على معرف المنتج الحالي الموجود على الصفحة.
ولكن إذا كان المنتج التالي الذي يتوافق مع المعايير في الاستعلام هو 2 أو أكثر من معرفتي قبل فترات الاستراحة الخاصة بي. لذلك هل هناك طريقة لتخطي هذه الصفوف والحصول على المعرف التالي الذي يطابق المعايير.
شكرا جزيلا لك.
المحلول
تغيير استفسارك لهذا:
$query_Recordset10 = "SELECT * FROM products
WHERE razdel='mix' AND ID > '$ID' AND litraj='$litri' ORDER BY ID ASC LIMIT 1";
لذلك لا تزال تحصل على صف واحد فقط (إذا كان هناك أي شيء لإرجاعه) ، لكنك ستعيد الصف التالي (وفقًا لـ Order by ID ASC) مقابل (محتمل) الصف مع معرف تدريجي.
نصائح أخرى
SELECT * FROM products
WHERE razdel='mix' AND
id> $ id AND litraj='$litri' ORDER BY ID ASC";
تم حل المشكلة. أنا مازل عندي الكثير لأتعلمه.
SELECT * FROM products WHERE razdel='mix' AND ID>'$ID' AND litraj='$litri' ORDER BY ID ASC LIMIT 1
هذا هو خط رايت ولكن خطأي كان كيف يتم إنشاء $ ID.
شكرا لكم جميعا.
استخدم foreach للحلق على صفيف بدلاً من محاولة الوصول بواسطة الفهارس (إذا كنت تجلب كل قيمة):
foreach ($records as $record) {
}
بدلاً من
for ($i = 0; $i < count($records); $i++) {
}
أو
$i = 0;
while ($i < count($records)) {
$i++;
}
أو
$i = 0;
do {
} while (++$i < count($records));
استخدم هذا الاستعلام بدلاً من ذلك:
SELECT * FROM products WHERE razdel='mix' AND ID>$ID AND litraj='$litri' ORDER BY ID ASC LIMIT 1
سيعطيك هذا العنصر التالي بعد العنصر الذي يحتوي على معرف $ $.