الخلية الاستعلام في PHP يعطي نتيجة خاطئة واضحة

StackOverflow https://stackoverflow.com/questions/646746

  •  22-07-2019
  •  | 
  •  

سؤال

وأنا باستخدام PHP وبريس لإنشاء موقع الشخصية الصغيرة. أنا أقدم أعضاء ورقم الهوية، والتي على أساسها هو أكبر عدد في الوقت الحالي في قاعدة البيانات، +1

وفعلت 25 الاختبارات قبل حصلت على السيناريو PHP حيث أردت لها أن تكون.

وI ثم حذف الإدخالات 25 باستخدام بريس.

ولكن الآن، عندما بلدي كود PHP يفعل هذا:

function getLatestID() {
    $query = "SELECT max(member_id) FROM members";
    $result = @mysql_query($query) or showError("unable to query database for user information");
    if (!($record = mysql_fetch_array($result))) return null;
    return $record[0];
}

وأحصل على رقم الخطأ.

وسيناريو اختبار: يحمل جدول قاعدة البيانات 3 مداخل، مع معرف 1 و 2 و 3

وأنا بدء جلسة التصحيح ووضع نقطة توقف على $record[0] العودة. I تحقق محتوياته وبدلا من 3، والذي هو أكبر عدد، من 28.

وكما هو الحال في 25 + 3 = 28، 25 الإدخالات التي أنا حذفت allready قد ...

هل أحد يعرف ما يسبب هذا وكيف يمكنني إصلاحه؟

هل كانت مفيدة؟

المحلول

وانها ربما لأنك AUTO_INCREMENT وضع والاستعلام تعود بأعلى الهوية. عند حذف سجلات أخرى، وربما كنت لم تقم بإعادة تعيين عدد السيارات زيادة.

نصائح أخرى

إذا كنت تستخدم auto_increment في الخلية السجلات ثم حذف لن يقلل من قيمة المقبلة.

ويمكنك تفريغ جدول مع TRUNCATE TABLE mytable - وهذا سيتم إعادة تعيين القيمة

ويمكنك أيضا تغيير القيمة التي تعتقد زيادة تلقائية هي القيمة التالية لتخصيص:

ALTER TABLE members AUTO_INCREMENT = 3;

لاحظ أنه إذا كنت وضعت في قيمة أقل من قيمة الحد الأقصى الحالية في العمود زيادة تلقائية، وأنها سوف تغيير القيمة إلى أن MAX + 1. لمعرفة ما يتم تعيين القيمة التالية الحالية، قيام بذلك:

SHOW CREATE TABLE members;

وفي نهاية تعريف الجدول، فإنه سوف تظهر "AUTO_INCREMENT = 26" أو أيا كان هو القيمة الحالية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top