PDA

View Full Version : insert کردن در PHP ؟



adnan
دوشنبه 21 شهریور 1384, 00:11 صبح
یعضی از فیلدهای دیتابیس مثلا از نوع auto_increment و یا timestamp را زمان Insert نمی خواد وارد کنیم .

در PHP از کجا بفهمیم که چه مقادیری insert شدند . آیا بعد از Insert باید select کرد تا مقادیر insert شده اخیر را فهمید یا در یک آرایه نگهداری می کند ؟

oxygenws
دوشنبه 21 شهریور 1384, 12:17 عصر
برای timestamp و اینجور چیزا، آره، باید select کنی.

Chachagh
چهارشنبه 30 شهریور 1384, 13:10 عصر
The reason which PHP doesn't ask for timestamp and auto_increment is that MySQL itself will fill in them. you can also fill them with your desired values.
it is like the time which you have a defaul value for your field. for timestamp this default value is the time when you insert in the field and for auto_increment the default is next identity of your field.

Chachagh

oxygenws
چهارشنبه 30 شهریور 1384, 13:33 عصر
سوال ایشون تقریبا چیز دیگه ایست!!
ایشون *دقیقا* اون چیزی که وارد شده رو می خوان (نه اینکه از نظر تئوری چه چیزی وارد میشه)

Chachagh
چهارشنبه 30 شهریور 1384, 16:15 عصر
What is inserted doesn't have any differences theoretically or practically, What do you mean by "in theory ?"
it is not a bad manner to give a complete answer.

adnan
چهارشنبه 30 شهریور 1384, 17:52 عصر
chachchagh ممنون ولی حق با اکسیژن است .

منظور من این بود که در آن فیلدی که auto increment است چه چیزی ریخته شده و از آن برای Insert کردن دریکجای دیگه استفاه کنم .
اگر قرار بود که یک مقدار خاص در آن بریزم که چه دلیلی داشت که auto increment تعریف کنم !؟؟؟

Achchan
چهارشنبه 30 شهریور 1384, 18:35 عصر
منظور من این بود که در آن فیلدی که auto increment است چه چیزی ریخته شده و از آن برای Insert کردن دریکجای دیگه استفاه کنم


I can't understand what do you mean by using it in another place.We use auto increment mainly for generating unique numbers as primary key column.Why do you want to use it other way?You can select max(column_name) from that_table and this will show you the current value of that auto increment field.In Oracle you can do it by a predefined attribute called CURRENTVAL of that sequence.But one of the most dangerous habits in oracle developers is REUSing the sequences.I hope you don't want this!BTW,there is no theory no practical difference,there is a fact and it is about a software behavior and you can SEE it in practice or refer to it in manuals of MySQL AB as Chachagh have done!
-Regards

adnan
چهارشنبه 30 شهریور 1384, 19:12 عصر
Achchan جان !

فرض کنید این فیلد ( auto increment ) که کلید اصلی ( primary key ) هم است کلید خارجی برای یک جدول دیگر هم است .

مثلا من مشخصات یک معلم را در جدول teacher اضافه می کنم ( Insert ) و می خواهم که در جدول کلاس هم اضافه کنم ! در آن جدول کلاس فقط آیدی آن معلم نگهداری می شود .

در این صورت کاری که من کردم 2 تا insert بوده و یک select !!!

یعنی اول مشخصات معلم را Insert کردم .
سپس همین رکورد را select کردم تا ببینم آیدیش چند شده
سپس در جدول کلاس هم یک رکورد Insert می شود .

امیدوارم با این مثال منظورم را متوجه شده باشید .

oxygenws
چهارشنبه 30 شهریور 1384, 21:49 عصر
منظور من از "تئوری" این بود که.... این دوستمون می دونه که اگر فلان چیز null باشه چه اتفاقی میفته.....
این دوستمون نمی دونست که وقتی insert شد، چطوری بازیابیشون کنه :) (دقیقا بعد از insert)

hkiani
پنج شنبه 12 آبان 1384, 10:53 صبح
سلام

بعد از insert کردن یک رکورد جدید برای بدست آوردن مقدار فیلد auto_increment می‌توانید از تابع mysql_insert_id استفاده کنید.
مثال:


$query = "INSERT INTO domains ( domain, ex, mail ) values( '$domain', '$ex',
'$mail' )";
mysql_query( $query, $link );
$id = mysql_insert_id();
print "Thank you. Your transaction number is $id. Please quote it in any
queries.";

------------------------------------------------------------------------
Table structure:
create table domains ( id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY( id ),
domain VARCHAR( 20 ),
ex CHAR(1),
mail VARCHAR( 20 ) );

Reference:
Matt Zandstra; SAMS Teach Yourself PHP4 in 24 Hours; Page: 221

adnan
پنج شنبه 12 آبان 1384, 13:07 عصر
خیلی مفید بود !

ممنون .

در مورد timestamp هم شبیه این تابع چیزی وجود دارد ؟

tabib_m
پنج شنبه 12 آبان 1384, 19:04 عصر
فکر نمیکنم ولی میتونی بعد از بدست آوردن مقدار فیلد auto یک سلکت انجام بدی. اینجوری نه سخته و نه مشکلی پیش میاد.

oxygenws
پنج شنبه 12 آبان 1384, 21:48 عصر
در مورد timestamp هم شبیه این تابع چیزی وجود دارد ؟
نه. نمی شه.

meysam7972
چهارشنبه 11 تیر 1393, 11:51 صبح
نه. نمی شه.




من یه سوال دارم البته خنده داره
ولی میخوام بهش برسم
واقعا دارم کلافه میشم تورورخدا کمکم کنین
من دوتا کوئری دارم که جفتشون یکی هستن اولی اجرا میشه دومی نه
$query = "insert into kala(code,name,tedad,darkhast,method,mode,workerna me,tarikh,mored,company,anbar,tozihat) values ('$code','$name','$tedad','$darkhast','$method','$ mode','$workername','$tarikh','$mored','$company', '$anbar','$tozihat')";
$

query2 ="insert into report(code,name,darkhast,method,mode,workername,t arikh,mored,company,anbar,tozihat) values ('$code','$name','$darkhast','$method','$mode','$w orkername','$tarikh','$mored','$company','$anbar', '$tozihat')";