PDA

View Full Version : خطای Duplicate entry به هنگام insert کردن داده



ahmad_1986
دوشنبه 13 خرداد 1387, 22:25 عصر
خواهشمندم یکی در مورد error زیر توضیحی بدهد .:افسرده::افسرده::افسرده:
Duplicate entry '1' for key 1
من وقتی داده های پر شده در فرم html که در یک فایل html در کامپیوتر خودم است به اسکریپت زیر ارسال می کنم با این error مواجه می شوم .


<?php
if(!strlen(trim($_GET['id'])))
die("please enter book id");
$query ="insert into ahmad values(";
$query = $query.$_GET['id'].",";
$query = $query."'".$_GET['name']."',";
$query = $query."'".$_GET['publisher']."',";
$query = $query."'".$_GET['date']."',";
$query = $query."'".$_GET['price']."',";
$query = $query."'".$_GET['note']."')";
$link = mysql_connect( "", "root", "0325" );
if ( ! $link ) {
die( "Couldn't connect to MySQL" );
}
mysql_select_db("2",$link) or die( "Couldnt open $database" );
mysql_query($query) or die('Query failed: ' . mysql_error());
mysql_close($link);
?>

اسکریپتم رو به چند نوع مختلف نوشتم باز این error را دریافت کردم.

vahid4134
دوشنبه 13 خرداد 1387, 22:45 عصر
این یعنی اینکه key اول شما که یا به صورت preimery key یا به صورت unique تعریف شده داری یک آیدی بهش میدی که قبلا ثبت شده. احتمالا باید قسمت آیدی رو نظاری و id رو auto_increment کنی

vahid4134
سه شنبه 14 خرداد 1387, 13:27 عصر
در مورد اخطار دومی که نوشتی راستش تا به حال بهش برخورد نکردم
در مورد column charset و column collate هم باید مربوط به تنظیمات encoding هست که برای زبان فارسی باید روی utf8-persian-ci قرار بدی. در مورد utf8 بودن که دیگه اطلاعات کاملی وجود داره که این قالب زبان رو پشتیبانی می کنه و حتی شما برای اینکه فارسی درست نشون داده بشه شما در داخل تگهای html هم utf8 رو قرار میدید و در خیلی از جاهای دیگه اما بحث persian-ci چی هست. mysql از این قسمت برای sort کردن استفاده می کنه. چون خیلی از زبانها هستند که به صورت utf8 هستند ولی sort کردنشون که مثل هم نیست. به خاطر همین اگر از این گزینه استفاده کنید mysql به درستی sort رو انجام میده. فقط توجه داشته باش که باید در ابتدای طراحی جداول این مقادیر رو درست قرار بدی که بعد دچار مشکل نشی.
در مورد flag ها هم که از اسمشون معلومه عزیز. یکی از گزینه ها رو می گم بقیه رو خودت سرچ کنی گیرت میاد چیه. شما یک ستون داری مقل credit . این گزینه هیچ وقت نمی تونه منفی بشه. بنابراین باید پرچم unsigned رو داشته باشه

ahmad_1986
سه شنبه 14 خرداد 1387, 16:54 عصر
وحید جان اشما بسیار ممنونم.