آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

عدم تکرار فیلد تکراری در دیتابیس سایت

محمد  11 سال پیش  11 سال پیش
0 0

وقتی دستور  INSERT INTO table VALUES رو اجرا میکنیم یک فیلد در دیتابیس سایت ایجاد میشه. حالا میخوام اگر فیلد تکراری نبود به دیتابیس اضافه بشه. از چه دستوری باید استفاده کنم و چطوری.

سعی کردم از INSERT OR IGNORE یا INSERT INTO table  IF NOT EXISTS استفاده کنم ولی موفق نشدم. باتشکر

 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
محسن موحد  11 سال پیش
+1 0

واسه فیلد مورد نظر , داخل دیتابیس ایندکس unique بذارید.

قبل از اینسرت میتونید یک دستور select بنویسید و چک کنید اون مفدار وجود دارد یا نه تا اگر وجود نداشت دستور insert اجرا شود.

نکته: زمانی که فیلد شما در دیتابیس unique باشه , مقدار تکراری اینسرت نمیشه.

پاسخ به سوال 
محمد  11 سال پیش
0 0

نمیخوام هیچکدوم از فیلدها unique باشن.

ببینید این کدی که نوشتم مشکلش کجاست. جواب نمیده

$value1= $_REQUEST['value1'];
 $value2= $_REQUEST['value2'];

$selected  = mysqli_query($connection,"SELECT * FROM `table` WHERE value1='$value1', value2='$value2'");

if($selected == null){

mysqli_query($connection,"INSERT INTO `table`  VALUES ('$value1', '$value2')");

}

پاسخ به سوال 
محسن موحد  11 سال پیش
+2 0

دلیل اینکه ایندکس یونیک رو نمیذارید چیه؟

بین شرط ها and میاد.
$_REQUEST اگر بذارید کاربر بصورت get و پارامتر در url هم میتونه فرمو سابمیت کنه.
برای جلوگیری از باگ sql injection باید مقادیرتونو escape کنید.
mysql_query خروجیش یک resource هست و باید با توابع mysql اطلاعاتو fetch کنید.

if(count($_POST) > 0)
{
    $value1 = mysqli_real_escape_string($connection, $_POST['value1']);
    $value2 = mysqli_real_escape_string($connection, $_POST['value2']);
    $selected = mysqli_query($connection,"SELECT * FROM `table` WHERE (value1='{$value1}' AND value2='{$value2}')");
    if(mysqli_num_rows($selected) == 0)
    {
        mysqli_query($connection,"INSERT INTO `table` VALUES ('{$value1}', '{$value2}')");
if(mysqli_affected_rows($connection) > 0)
{
echo 'saved...';
} } }

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .