%45 تخفیف، با کد daneshjoo روی تمام آموزش ها، بمناسبت روز دانشجو
زمان باقی مانده
سبد (0)

تبلیغات

درج اطلاعات در PHP

درج کردن اطلاعات در MySQL با استفاده از MySQLi و PDO

Wiki

بعد از اینکه پایگاه داده و جداول را ایجاد کردیم، حالا نوبت به درج اطلاعات می رسد.

دستور INSERT INTO برای درج کردن یک رکورد جدید در جدول استفاده می شود.

در اینجا چند قانون ساختاری وجود دارد که باید پیروی کنید:

  • کوئری های SQL در PHP باید با علامت کوتیشن محصور شوند.
  • مقادیر رشته ای استفاده شده در کوئری ها باید با علامت کوتیشن محصور شوند.
  • اعداد را نباید با کوتیشن محصور کنید.
  • کلمه NULL نباید با کوتیشن محصور شود.

به دو صورت می توان از دستور INSERT INTO استفاده کرد:

1- در این روش نیازی نیست که نام ستونها ذکر شود:

INSERT INTO table_name
VALUES (value1, value2, value3,...)

2- در این روش باید نام ستون ها و مقادیر متناظرشان ذکر شود:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

برای کسب اطلاعات بیشتر در مورد SQL، به لینک روبرو مراجعه فرمایید: آموزش SQL-مقدمه

در مطلب قبل، یک جدول با نام "MyGuests" با 5 فیلد "id" و "firstname" و "lastname" و "email" و "reg_date" ایجاد کردیم، حالا اجازه دهید تا جدول را با اطلاعات پر کنیم.

Note توجه: اگر هنگام تعریف جدول، برای یک ستون، گزینه AUTO_INCREMENT را تنظیم کرده باشیم (مانند فیلد id) و یا فیلد مورد نظر از نوع TIMESTAMP باشد (مانند فیلد reg_date) هنگام درج اطلاعات نیازی به مشخص کردن مقدار نیست و MySQL بصورت اتوماتیک آنها را پر خواهد کرد.

مثال های زیر یک رکورد جدید به جدول "MyGuests" اضافه خواهند کرد:

مثال (MySQLi Object-oriented)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

مثال(MySQLi Procedural)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

 توجه: همانطور که قبلاً گفته شد در روش MySQLi Procedural برای اجرای کوئری ها، باید از تابع ()mysqli_query استفاده کرد، این تابع توسط Connectionی که برقرار شده برای ارسال کوئری به MySQL استفاده می شود.

مثال(PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

دیدگاه‌ها  

+1 # ameerameer 1394-11-25 00:01
سلام واقعا شرمندم ببخشید من کدم را از قسمت values اینجوری ادیت کردم به من تعیید ساخت رکورد را داد values ({name},{email} ,{website},{gen der}) فقط 2تا سؤال داشتم 1. این کد پایگاه داده را کجا باید بزارم میشه تو همون کدی که برای کنترل فرمم نوشتم بزارم 2. از کجا بفهمم که یک رکورد اضافه شده است. از پاسخگوییتان بسیار ممنونم انشا الله هرچه از خدا میخواهید بهتون بده
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-11-25 08:27
با سلام و تشکر.
والا این که کد رو دقیقا کجا بذارید رو باید خودتون مشخص کنید. چون شما برنامه رو نوشتید. من نمی‌دونم منطقش چیه که بگم کجا باید گذاشته بشه.
هر جا مقادیر رو گرفتید، همونجا آنالیزش کنید و بعد از اعتبارسنجی رکورد رو بسازید.

اما برای اینکه متوجه بشید رکوردی ساخته شده یا نه، بعد از اجرای کوئری و ایجاد رکورد، دستور ;()mysql_affect ed_rows رو اجرا کنید. این دستور به شما تعداد رکوردهایی که دستخوش تغییرات بودند رو بر می‌گردونه. در اینجا چون یک رکورد دست‌خوش تغییر (ایجاد) شده به شما مقدار یک رو خواهد داد.

مقدار صفر در اجرای این دستور یعنی اینکه عملیاتی در دیتابیس روی رکوردها انجام نشده.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # ameerameer 1394-11-24 20:58
عزیزم این فایلی را که فرستادم حاوی ارور هایی هست که مرورگر بهم داده و کد هام نیستش چون کد ها زیاد هست توی این فایل قرار دادم خیلی ببخشید
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-11-24 21:11
فایل دانلود نمیشه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # ameerameer 1394-11-24 23:02
http://up.persianscript.ir/uploads2/2e54-فرمت-فایل-txt-هستش.zip
خودم امتحان کردم شد چون ارور ها زیاده این کار را میکنم و بهتون زحمت میدم چون اینجا پیست میکنم ارسال نمیشه
( ! ) Warning: mysqli_connect( ): (HY000/2002): No connection could be made because the target machine actively refused it. in C:\wamp64\www\p erson.php on line 2
Call Stack
#
Time
Memory
Function
Location
1
0.0006
238112
{main}( )
...\person.php:0
2
0.0007
238496
mysqli_connect ( )
...\person.php:2
Failed to connect to MySQL: No connection could be made because the target machine actively refused it.
( ! ) Notice: Undefined index: NAME in C:\wamp64\www\p erson.php on line 7
Call Stack

این یک بخشش هست ولی تمامی ارور ها همینه
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-11-25 08:28
مشکل کانکت شدن دیتابیس هست. عبارت NAME رو نمیتونه پیدا کنه. دقت کنید این عبارت درست تعریف شده باشه!!!
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # ameerameer 1394-11-24 20:16
شرمنده مدیر عزیز انقدر مزاحم میشم من کد شما را به کدم افزودم اما یک ارور هم که برای شما ارسال میکنم اضافه شد که اولین و آخرین ارور هستند که قبلا نبودن ممنون میشم یک نگاه بندازید اگر امکان داره یک برام بنویسید و به ایمیلم بفرستید خیلی خیلی گلید از پاسخگوییتتان ممنونم http://up.persianscript.ir/uploads2/2e54-فرمت-فایل-txt-هستش.zip
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-11-24 20:27
خواهش میکنم.
متأسفانه من امکان اجرای کدهای شما رو ندارم. برای راهنمایی بهتره، متن خطا رو بفرستید. متن خطا رو ببینم، متوجه میشم مشکل از کجاست.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # ameerameer 1394-11-24 18:49
سلام قربان من یک بار کد هایم را کپی پیست کردم اما نیومد حالا آپلود کردم فقط یک لطف کنید پسوند فایل را به php تغییر دهید فقط یک مورد هم من توی کدم وقتی که جدولم ساخته شد دیگه کد مربوط به ساخت جدول را پاک کردم خیلی ممنون میشم جوابمو بدید
http://up.persianscript.ir/uploads2/e419-person.zip
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-11-24 19:07
سلام.
کوئری رو یه مقدار بد نوشتید. بهتره عبارت رو داخل کوتیشن و فیلدهای رو داخل ` بذارید.
این رو امتحان کنید:
$sql="INSERT INTO incom (`Name`, `email`, `website`, `gender`) VALUES ('{$_POST['NAME ']}','{$_POST[' email']}','{$_P OST['website']} ','{$_POST['gen der']}')";
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # ameerameer 1394-11-24 17:11
سلام مدیر عزیز من یک فرم شبیه کدی که در قسمت فرم های php آموزش دادید را کاملا همانجور ساختم حالا میخواهم آن ها را در mysql درج کنم که یک جدول هم ساخته ام اما وقتی اینسرت میکنم کار نمیکند خواستم ببینم اشکال کدم از کجاست این هم کدم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-11-24 17:21
با سلام و تشکر.
کدی در اینجا نیومده!
همینطور برای راهنمایی بهتر در صورت امکان متن خطایی که به شما میده رو هم بذارید. زمانی که یک کوئری به هر دلیل با موفقیت اجرا نیشه، یه خطا بر می‌گردونه. این خطا رو میتونید با دستور ()mysql_error نمایش بدید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # فریبا mizraee 1394-10-01 09:02
وقتی به مقدار هام متغییر میدم
$sql = "INSERT INTO MyGuests ('username', 'password')
VALUES ('$username', '$password_md5')";
مشکل پیدا می کنم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # hamid fa 1394-10-01 10:55
با سلام به شما دوست عزیز و گرامی

دقیقا چه اروری رو میبینید بعد مقدار دادن

در ضمن کمی کد ها تون رو کامل تر بذارید تا بتونم راهنماییتون کنم

با تشکر
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # amin 1394-07-30 20:37
اگر بخواهیم اطلاعاتی از یک فرم ارسال شود در جدول نگه داری شود باید چه کنیم؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-07-30 22:13
با سلام خدمت شما دوست عزیز.
سؤال شما مشابه سؤال قبلی دوست عزیزمون هست که جواب دادم.

جواب سؤال قبلی، جواب شما هم هست.
اگر ابهامی بود، بفرمایید تا خدمتتون توضیح بدم.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # amir SALEHI 1394-05-16 12:39
سلام ببخشید شما الان خودتون اطلاعات رو اضافه کردین
الان من بخام داخل یک فرم این دستور رو بزارم باید چکار کنم؟جدول ایجاد کردیم و ارتباط هم ایجاد کردیم
بخام یک فرم ایجاد کردم از INSERT INTO چطوری باید استفاده کنم که مستقیم خودش ارسال کنه به پایگاه داده؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-07-30 22:10
با سلام.
زمانی که فرم ارسال میشه، با توجه به متد ارسال فرم مقادیر داخل یکی از آرایه‌های POST_$ یا GET_$ ریخته میشه. شما می‌تونید مقادیر مربوطه رو از داخل این ارایه گرفته و بعد از validate و پاکسازی مقادیر، اون رو داخل دیتابیس بریزید.

کد زیر یک مثال خیلی ساده است و فقط جاهایی که نیاز به توضیح شفاف داره به صورت کد هست. برخی از جاها فقط کامنت‌ گذاشته شده است که گویاست باید چی کار کنید.
<?php
if(count($_POST) > 0 && isset($_POST['btnSend'])){
$name = isset($_POST['t xtName']) ? $_POST['txtName '] : '';
$family = isset($_POST['t xtFamily']) ? $_POST['txtFami ly'] : '';
$age = isset($_POST['t xtAge']) ? $_POST['txtAge' ] : '';

// validate inputs
// ...

if($name && $family && $age){

// connection to database
// ...

// select database
// ..
$query = "INSERT INTO tblUser (`name`, `family`, `age`) VALUES ('{$name}', '{$family}', '{$age}')";

$result = mysql_query($query);
}
}
?>
<!DOCTYPE html>
<html>
<head>
<link rel="style sheet " href="styl e.css " type="text /css" />
<meta http-equiv=&quo t;Con tent-Type" content="t ext/h tml; charset=iso-885 9-1" />
<title>Untitled Document</title>
</head>

<body>
<form method="po st" action="">
<input type="text " name="txtN ame" />
<input type="text " name="txtF amily" />
<input type="text " name="txtA ge" />
<input type="subm it" name="btnS end" value="Sen d" />
</form>
</body>
</html>


جدول فرضی tblUser هست که دارای 3 فیلد نام،‌ نام خانوادگی و سن هست. دقت کنید مقادیر حتما باید قبل ریختن داخل دیتابیس اعتبارسنجی بشن، تا از تزریق کدهای خطرناک داخل دیتابیس جلوگیری بشه. من این کار رو تو کامنت مطرح کردم، با این دید که شما حتما انجامش خواهید داد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # محمد 1393-12-29 20:18
ببخشید میشه تمام این دستورات رو با متغیر $sql ایجاد کرد ؟ یعنی از یه متغیر برای ایجاد پایگاه داده ، جدول و insert کردن استفاده کرد یا باید با هم فرق کنه :)
از پاسخ "سریع" شما واقعا ممنون :) :D
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیر پهلوان صادق 1394-01-05 12:55
بله مشکی وجود ندارد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی PHP

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

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی