PDA

View Full Version : سوال: عدم ثبت مقدار در صورت برابری با 2 ستون دیگر



Yashar1989
چهارشنبه 09 بهمن 1392, 13:06 عصر
سلام

من یه جدول با ستون های زیر دارم:

brand
model
price

اطلاعات رو دارم از یه سایت دیگه میگیرم
میخوام اگر دو ستون brand و model با اطلاعاتی که از اون سایت میگیرم برابر بود دیگه دوباره اطلاعات وارد دیتابیس نشه

مثلا بنز 2014 رو من قبلا وارد دیتابیس کردم میخوام اگر دوباره در اطلاعات دریافتی از اون سایت بنز 2014 بود دیگه وارد دیتابیس نکنه و 2تا نشه
در واقع میخوام 2 ستون به شرط همدیگه unique باشن

Dark Lord
چهارشنبه 09 بهمن 1392, 13:43 عصر
از ON DUPLICATE KEY UPDATE استفاده کنید.

Yashar1989
چهارشنبه 09 بهمن 1392, 14:13 عصر
از ON DUPLICATE KEY UPDATE استفاده کنید.

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

function InsertNew($car,$brand,$price) {
return mysql_query("INSERT INTO `points`(`car`,`brand`,`price`) VALUES ('$car','$brand','$price')");
}
دستوری که گفتید منابعش رو خوندم اما چیزی متوجه نشدم
شرمنده 2-3 ساعتی روی این وقتم صرف شده الان کلاً هنگ کردم

Dark Lord
پنج شنبه 10 بهمن 1392, 18:01 عصر
راه های زیادی وجود داره،مثلا شما فیلد مدنظرتون که اطمینان دارید منحصر به فرد هست رو Unique و بعد توی sql خودتون از ignore استفاده کنید.



function InsertNew($car,$brand,$price) {
return mysql_query("INSERT IGNORE INTO `points`(`car`,`brand`,`price`) VALUES ('$car','$brand','$price')");
}

hamedarian2009
پنج شنبه 10 بهمن 1392, 19:29 عصر
میتونید قبل اینکه اینکه اطلاعاتو درج کنید یک select بزنید و ببینید اگه مقدار دریافتی شما در بانک موجود هست از درج اون صرف نظر کنید

Yashar1989
دوشنبه 12 اسفند 1392, 22:42 عصر
میتونید قبل اینکه اینکه اطلاعاتو درج کنید یک select بزنید و ببینید اگه مقدار دریافتی شما در بانک موجود هست از درج اون صرف نظر کنید
یک ماهی میشه از تاریخ ایجاد تاپیک میگذره اما قسمتهای دیگه پروژم رو انجام دادم الان دوباره به این مشکل رسیدم
اگر این روش رو توضیح بدید ممنون میشم

hamedarian2009
سه شنبه 13 اسفند 1392, 11:30 صبح
یک ماهی میشه از تاریخ ایجاد تاپیک میگذره اما قسمتهای دیگه پروژم رو انجام دادم الان دوباره به این مشکل رسیدم
اگر این روش رو توضیح بدید ممنون میشم

[CODE]
$result = mysql_query("SELECT * FROM points WHERE car = '$car' AND brand='$brand'");
$count = mysql_num_rows($result);
if($count > 0){
echo 'This car is in database exist';
exit;
}

[CODE/]

Yashar1989
سه شنبه 13 اسفند 1392, 13:06 عصر
[CODE]
$result = mysql_query("SELECT * FROM points WHERE car = '$car' AND brand='$brand'");
$count = mysql_num_rows($result);
if($count > 0){
echo 'This car is in database exist';
exit;
}

[CODE/]
ممنون از پاسختون الان مشکل ثبت مقادیر تکراری حل شد
ولی وقتی توی حلقه for میزارم فقط شرط if رو تا جایی که مقادیر تکراری باشه چک میکنه + یک مقدار آخر که اگه ثبت نشده باشه
بعد از اون دیگه حلقه ی for رو ادامه نمیده
مقدار $i توی حلقه for رو کجای این query باید بزارم تا ادامه پیدا کنه؟

مشکلم حل شد mysql_query رو به صورت return نوشته بودم که یکبار اجراش میکرد