الخلية الاستعلام في PHP يعطي نتيجة خاطئة واضحة
-
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
" أو أيا كان هو القيمة الحالية.