💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ امیر ابوئی
علت درج نکردن برخی اطلاعات در دیتابیس
جامعه پی اچ پی ایجاد شده در ۱۹ دی ۱۳۹۹

سلام و احترام

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

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

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

 

سلام و احترام

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

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

امیر صالحی ۱۹ دی ۱۳۹۹، ۱۲:۵۲

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

امیر ابوئی ۱۹ دی ۱۳۹۹، ۱۶:۱۰

سلام و احترام

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

امیر صالحی ۲۰ دی ۱۳۹۹، ۰۷:۴۵

کوئری 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);
امیر ابوئی ۲۰ دی ۱۳۹۹، ۱۷:۲۸

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

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

 

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

امیر ابوئی ۲۰ دی ۱۳۹۹، ۱۸:۳۸