علت درج نکردن برخی اطلاعات در دیتابیس

پرسیده شده
فعالیت 1211 روز پیش
دیده شده 542 بار
0

سلام و احترام

ببخشید هنگامی که من کوئری درج اطلاعات داخل دیتابیس زدم، خوشبختانه رکوردهارو رو به خوبی داخل جدول درج میکنه فقط مشکلی که هست اینه چون من گذاشتم شماره سطر رکورد ثبت شده رو نمایش میده، بعد هرچندتا رکوردی که ثبت میشه، به صورت اتفاقی یکی از رکوردهارو شماره سطرشو مینویسه ۰ و وقتی دیتای بعدی رو میزنم درج بشه یکی شماره تو میندازه یعنی مثلا اینجوریه که موقع نمایش شماره سطر رکورد مینویسه: 
۱۵۷ ، ۱۵۸ ، ۰، ۱۶۰

و داخل جدول هم اثری از اون رکورد نیستش و آی دی رکوردها تو جدول اینجوری ثبت میشن: (۱۵۷، ۱۵۸، ۱۶۰)

امکانش هست راهنماییم کنید که این مشکل بخاطر چی هستش ؟

 

فایل پیوست

امیر ابوئی
امیر ابوئی

19 دی 99

0
حذف شده

سلام و احترام

اگه امکانش هست یه خورده واضح تر توضیح بدید. شما موقع insert کردن id ها رو هم به شکل دستی وارد میکنید؟

یه عکس کامل از table بدید

فایل پیوست

امیر صالحی

توسط

امیر صالحی

19 دی 99

0
حذف شده

خیر ، ستون اول رو که برای idهای هستش اگر مشاهده کنید، متوجه منظورم میشید!

فایل پیوست

امیر ابوئی

توسط

امیر ابوئی

19 دی 99

0
حذف شده

سلام و احترام

اگه امکانش هست تصاویر رو یک بار دیگه قرار بدید چون هیچ کدوم لود نمیشن

فایل پیوست

امیر صالحی

توسط

امیر صالحی

20 دی 99

حذف شده
لینک تصویر که همینجا تو آکادمی آپلود شده رو مجدد براتون فرستادم: https://up.7learn.com/academy/community/2021-01/4025/fleCyDMKbudIszlu0Jr0u6ymBclKsBUAlghUPEEP.png?token=Kyc4kcpaB9KHHR61t_4LIA&expires=1610202208
امیر ابوئی

20 دی 99

حذف شده
لطفا کوئری که insert میکنید رو هم قرار بدید تا بررسیش کنم
امیر صالحی

20 دی 99

0
حذف شده

کوئری insert:

$sex_array = ['male', 'female'];
$signleCheck = ['single', 'married'];
$userData = array(
    'firstName' => "Amir" . rand(0, 200),
    'lastName' => "Abouei" . rand(200, 500),
    'age' => rand(10, 80),
    'sex' => $sex_array[rand(0, 1)],
    'email' => rand(100, 200) . "@yahoo.com",
    'isSingle' => $signleCheck[rand(0, 1)]
);

#print_r($userData);

function addUser($userData){
    global $mysqli;
    $insertD = "insert into users (firstName, lastName, age, sex, email, isSingle)
    values(?, ?, ? ,?, ?, ?)";
    $stmt = $mysqli -> prepare($insertD);
    #print_r($mysqli);
    $stmt -> bind_param('ssisss', $userData['firstName'], $userData['lastName'], $userData['age'], $userData['sex'], $userData['email'], $userData['isSingle']);
    #print_r($stmt);
    $stmt ->execute();
    return $stmt->insert_id;
}

    echo addUser($userData);
فایل پیوست

امیر ابوئی

توسط

امیر ابوئی

20 دی 99

2
حذف شده

الان که بررسی کردم، مشکل رو فهمیدم و برام جالب هم بود که:

من ستون email رو UNIQUE کرده بودم و موقع هایی که مقدار ایمیل،مشابه مقداری بود که قبلا درج شده، بخاطر خاصیت یکتابودن مقادیر ستون، کلا رکورد درج نمیشد و به ما مقدار insert_id رو 0 برمیگردوند!

 

فقط نکته ای که برام سؤاله اگر با گذاشتن شرط UNIQUE قبل از درج رکورد، اطلاعاتش چک میشه، چرا پس وقتی رکورد بعدی رو میخواییم درج کنیم id رکورد یه شماره بالاتر هستش ؟!!؟

فایل پیوست

امیر ابوئی

توسط

امیر ابوئی

20 دی 99

حذف شده
چون میره که درجش کنه اما وقتی به ایمیل میرسه fail میشه و اون رکورد delete میشه، و زمانی که برای رکورد بعدی میره مثل ترتیب های قبلی شروع به درج رکورد میکنه
امیر صالحی

21 دی 99