-
اضافه کردن ای دی منحصر بفرد به دیتابس
سلام. کد زیر رو مشاهده کنید.
طبق این کد به دیتابس سه مقدار adress,score,send اضافه میشه. میخام یهid منحصربفرد هم به دیتابس اضافه بشه به هر ردیف.چه باید بکنم.لطفا کمک کنید
کد PHP:
$address=$_GET['address'];
if($address=='' || $address==' '){$address="unknown";};
mysql_connect('localhost','root','');
mysql_select_db('pop');
mysql_query("SET NAMES 'utf8'");
$result = mysql_query("SELECT address FROM users WHERE address='$address'");
$number = mysql_num_rows($result);
if($number==1){
$go = mysql_query("SELECT address FROM users WHERE score>0 and address<>'$address' and address<>'unknown' order by rand()");
$data=mysql_fetch_array($go);
$input=$data;
$rand_keys = array_rand($input, 2);
$numberd=mysql_num_rows($go);
if($numberd>=1){
$addr=$input[$rand_keys[0]];
mysql_query("UPDATE `users` SET score =score + 1 where address = '$address';");
mysql_query("UPDATE `users` SET sent =sent + 1 where address = '$addr';");
mysql_query("UPDATE `users` SET score =score - 1 where address = '$addr';");
echo '<script>self.parent.location="http://';echo $addr;echo'"</script>';
}else{
mysql_query("UPDATE `users` SET score =score + 1 where address = '$address';");
echo '<script>self.parent.location="http://localhost"</script>';
};
}else{
$go = mysql_query("SELECT address FROM users WHERE score>0 and address<>'$address' and address<>'unknown' order by rand()");
$data=mysql_fetch_array($go);
$input=$data;
$rand_keys = array_rand($input, 2);
$numberd=mysql_num_rows($go);
if($numberd>=1){
$addr=$input[$rand_keys[0]];
mysql_query("INSERT INTO users VALUES ('$address',1,0)");
mysql_query("UPDATE `users` SET sent =sent + 1 where address = '$addr';");
mysql_query("UPDATE `users` SET score =score - 1 where address = '$addr';");
echo '<script>self.parent.location="http://';echo $addr;echo'"</script>';
}else{
mysql_query("INSERT INTO users VALUES ('$address',1,0)");
echo '<script>self.parent.location="http://www.localhost"</script>';
};
};
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
باید از دیتابیس
id رو از نوع int کنین و بعد بهش primary و auto increasment رو بدین
خودش اتومات یکی یکی بالا میره و نمیتونه دوتا ایدی با یک عدد توش باشه
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نقل قول:
نوشته اصلی توسط
miladtnt
باید از دیتابیس
id رو از نوع int کنین و بعد بهش primary و auto increasment رو بدین
خودش اتومات یکی یکی بالا میره و نمیتونه دوتا ایدی با یک عدد توش باشه
ممنون. اینکارو کردم اما دیه خودش اون سه تا مورد رو اضافه نمیکنه.نمی دونم مشکل از کجاس
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
کد:
ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT K
بجای tableName اسم تیبل خودتون قرار دهید.
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نقل قول:
نوشته اصلی توسط
T.Toosi
کد:
ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT K
بجای tableName اسم تیبل خودتون قرار دهید.
به کجای کد اضافه کنم؟ ببخشیدا
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نقل قول:
نوشته اصلی توسط
mirmohsen
ممنون. اینکارو کردم اما دیه خودش اون سه تا مورد رو اضافه نمیکنه.نمی دونم مشکل از کجاس
اگه mysql تون ورژن 5.6 هست باید دقت کنین هیچ ستونی رو خالی نزارید چون ارور میده
دقت کنین وقتی insert میکنین باید value اول رو خالی بزارید چون مال ایدی هست و از value I های بعدی شروع به INSERT کنین ( ایدی رو هم بیارین ستون اولی)
از دستور MYSQL_ERROR استفاده کنین ببینین مشکلتون از کجا هست که INSERT نمیشه بهتون میگه
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
ببینید دوستان این کد رو ببینید:
mysql_query("INSERT INTO users VALUES ('$address',1,0)");
الان سه تا رو insert میکنه دیتابس.چیکار کنم که ای دی هم خوادکار و بترتیب اضافه کنه؟کل مشکل من اینه
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نقل قول:
نوشته اصلی توسط
mirmohsen
کسی جوابگو نیست ایا؟
دوست عزیز دوستان پاسخ کامل رو دادن.
شما فقط کافیه وارد phpMyAdmin بشید و برای تیبل users یه ستون دیگه به نام id با نوع int و خاصیت auto increment بسازید.
از این به بعد همین کد INSERT رو که اجرا کنید خودکار یه آیدی منحصر به فرد هم از هر ردیف در ستون id که ساختید ساخته میشه.
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نمیشه اخه.امتحان کردم. insert نمیشه.باید در کد id هم معرفی بشه شاید
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
باید کوئری INSERT رو اینطوری بنویسید:
کد:
mysql_query("INSERT INTO users (value1, value2, value3) VALUES ('$address',1,0)");
و به جای value1 تا value3 اسم اون ستون هایی که قراره تغییر کنه رو بنویسید.
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نمیشه در همین کد id هم معرفی بشه؟ اخه من این کارو کردم فقط ای دی 1 وارد میشه و بفیه رو insert نمیکنه
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نقل قول:
نوشته اصلی توسط
mirmohsen
نمیشه در همین کد id هم معرفی بشه؟ اخه من این کارو کردم فقط ای دی 1 وارد میشه و بفیه رو insert نمیکنه
میشه به جای یکی از اون value هم id رو زد.
اما تا اون جایی که من می دونم وقتی id زده نشه خودش خودکار انتخاب میشه اینکه چرا برای شما فقط اولی رو INSERT میکنه عجیبه.
برای فهمیدن آخرین آیدی اضافه شده هم می تونید از LAST_INSERT_ID() به جای مقدار ستون id استفاده کنید.
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
یعنی به این صورت:
mysql_query("INSERT INTO users (id, value1, value2, value3) VALUES (LAST_INSERT_ID(),'$address',1,0)");
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
دوست عزیز راهش همینه
نقل قول:
باید از دیتابیس
id رو از نوع int کنین و بعد بهش primary و auto increasment رو بدین
خودش اتومات یکی یکی بالا میره و نمیتونه دوتا ایدی با یک عدد توش باشه
شما وقتی این کارو انجام دادی کافیه بصورت عادی اینسرت هات رو انجام بدی خودش خودکار یکی یکی زیاد میکنه
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
ببین شما یه بار کد اصلی رو که در پست اول دادم نگاه کنید.همه کارایی که دوستان عزیزم گفتن انجام دادم. اما جواب نمیده.یعنی خودش نمیتونه تشخیص بده که چه ای دی اضافه کنه به دیتابس.
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نقل قول:
نوشته اصلی توسط
mirmohsen
ببین شما یه بار کد اصلی رو که در پست اول دادم نگاه کنید.همه کارایی که دوستان عزیزم گفتن انجام دادم. اما جواب نمیده.یعنی خودش نمیتونه تشخیص بده که چه ای دی اضافه کنه به دیتابس.
شما مطمعن هستید اینو تنظیم کردید؟
auto increasment
ضمنا الان فیلد ای دی چطوری داره پر میشه یه اسکرین شات قرار بدید
-
1 فایل پیوست
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
اصلا پر نمیشه.حتما من باید مقدار ای دی رو یک عدد اختصاص بدم مثلا 2 یا 1 تا بقیه اطلاعات وارد دیتابس بشه یعنی اینطوری:
mysql_query("INSERT INTO users (id, address, score, send) VALUES (2,'$address',1,0)");
بلهauto increasment کردم. اینم اسکرین شات از نحوه ساخت:
فایل پیوست 31538
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
id نباید تو کويری بیاد
کد PHP:
mysql_query("INSERT INTO users (id, address, score, send) VALUES (2,'$address',1,0)");
این شکلی کنش
کد PHP:
mysql_query("INSERT INTO users (address, score, send) VALUES ('$address','1','0')");
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
کردم. همه کار.هر جور امتحان کردم. نشد.دستت درد نکنه ممنونم
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
مشکل رو متوجه شدم.باید دیتابس رو به صورت ENGINE=InnoDB سیو کنم.ولی مشکل اینه که اسکریپ بر پایه ENGINE=MyISAM هستش و وقتی تغییر بدم اسکریپ خوب کار نمیکنه
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نقل قول:
نوشته اصلی توسط
mirmohsen
مشکل رو متوجه شدم.باید دیتابس رو به صورت ENGINE=InnoDB سیو کنم.ولی مشکل اینه که اسکریپ بر پایه ENGINE=MyISAM هستش و وقتی تغییر بدم اسکریپ خوب کار نمیکنه
شما کافیه که به phpmyadmin برید و جدول مورد نظر خودتون رو انتخاب کنید. بعد add new column رو بزنید و نام ستون دلخواه رو تایپ کنید و در اخر ثبت کنید تا یک ستون به جدول شما اظافه بشه. موفق باشید.
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
دوستان عزیز. مشکلم هنوز حل نشد. کل مشکل من اینه:
ببین دوستان گفتن که id رو ازدیتابس روی auto increasment تنظیم کن و خودش خودکار اطلاعاتی که دخیر میشه رو بترتیب شماره بندی میکنه یعنی دستور زیرو:
mysql_query("INSERT INTO users (value1, value2, value3) VALUES ('$address',1,0)");
ولی مشکل اینجاس که فقط یک مورد رو insert میکنه و من فک میکنم چون نمیتونه اطلاعات ای دی قبلی رو دریافت کنه سپس insert نمیکنه اطلاعات جدیدو.
حالا من میخام یه کدی باشه که توی فایل php بزارم که اخرین id رو پیدا کنه بعد برای اطلاعات جدید یکی بهش اضافه کنه؟
کمک میکنید
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
اگر میبینید مشکل دارید و auto increment مناسب کار شما نیست ، میشه آیدی ها رو خودتون وارد کنید
آیدی ها رو هم برای این که صعودی باشه و یکتا ، از تابع time() استفاده کنید. اون رو توی یه متغیر بزارید و ازش استفاده کنید
حالا هم ID هاتون یکتا هست و هم اینکه میدونید چه آیدی ای استفاده کردید
البته اگر فاصله اضافه کردن رکورد هاتون کمتر از یه ثانیه هست از تابع microtime() استفاده کنید
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
من خودم نبايد دستي وارد کنم اي دي رو،يه اسکريپ دارم خودش خودکار insert ميکنه و ميخام خودش تشخيص بده id داده قبلي چي بوده و يکي اضافه کنه.کد اسکريپ در اولين پست همين موضوع هست،يه کمک کنيد،خيلي مغزمو درگير کژده
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
نقل قول:
نوشته اصلی توسط
mirmohsen
من خودم نبايد دستي وارد کنم اي دي رو،يه اسکريپ دارم خودش خودکار insert ميکنه و ميخام خودش تشخيص بده id داده قبلي چي بوده و يکي اضافه کنه.کد اسکريپ در اولين پست همين موضوع هست،يه کمک کنيد،خيلي مغزمو درگير کژده
دوست عزیز این مشکلی که شما میگید خیلی عجیبه اصلاً ربطی هم به InnoDB یا MyISAM بودن موتور دیتابیس نداره چون در هر دوش این امکان باید براحتی انجام بشه.
شما در یه هاست دیگه هم همین اسکریپتت رو تست کن اگه اون جا جواب گرفتی به احتمال زیاد مشکل در سرور هاست فعلی است.
-
پاسخ : اضافه کردن ای دی منحصر بفرد به دیتابس
اصلا ببینید من الان کاری به دیتابس و موتورش ندارم. اون حرفی هم که زدم اشتباه بوده.الان حرف من اینه که تمام پست هایی که در این بخش ارسال شده رو نادیده بگیرید فقط پست اول منو نگاه کنید و اینکه یهتغغیری در اون کدایجاد بشه که خودش id قبلی رو ازدیتابس بگیره و داده جدید رو با id+1 ذخیره کنه.مشکل من اینه. کد اصلیش هم در زیر اومده:
کد PHP:
$address=$_GET['address'];
if($address=='' || $address==' '){$address="unknown";};
mysql_connect('localhost','root','');
mysql_select_db('pop');
mysql_query("SET NAMES 'utf8'");
$result = mysql_query("SELECT address FROM users WHERE address='$address'");
$number = mysql_num_rows($result);
if($number==1){
$go = mysql_query("SELECT address FROM users WHERE score>0 and address<>'$address' and address<>'unknown' order by rand()");
$data=mysql_fetch_array($go);
$input=$data;
$rand_keys = array_rand($input, 2);
$numberd=mysql_num_rows($go);
if($numberd>=1){
$addr=$input[$rand_keys[0]];
mysql_query("UPDATE `users` SET score =score + 1 where address = '$address';");
mysql_query("UPDATE `users` SET sent =sent + 1 where address = '$addr';");
mysql_query("UPDATE `users` SET score =score - 1 where address = '$addr';");
echo '<script>self.parent.location="http://';echo $addr;echo'"</script>';
}else{
mysql_query("UPDATE `users` SET score =score + 1 where address = '$address';");
echo '<script>self.parent.location="http://localhost"</script>';
};
}else{
$go = mysql_query("SELECT address FROM users WHERE score>0 and address<>'$address' and address<>'unknown' order by rand()");
$data=mysql_fetch_array($go);
$input=$data;
$rand_keys = array_rand($input, 2);
$numberd=mysql_num_rows($go);
if($numberd>=1){
$addr=$input[$rand_keys[0]];
mysql_query("INSERT INTO users VALUES ('$address',1,0)");
mysql_query("UPDATE `users` SET sent =sent + 1 where address = '$addr';");
mysql_query("UPDATE `users` SET score =score - 1 where address = '$addr';");
echo '<script>self.parent.location="http://';echo $addr;echo'"</script>';
}else{
mysql_query("INSERT INTO users VALUES ('$address',1,0)");
echo '<script>self.parent.location="http://www.localhost"</script>';
};
};