ساخت دیتابیس، جدول و ستون با دستور CREATE در MySQL

شیوه دستی ایجاد پایگاه داده در برنامه phpMyAdmin به خودی خود روش مناسبی است اما برنامه نویسان وب عموما با کدنویسی و دنیای کدها سر و کار دارند و تمرکز آموزش های پیش رو نیز در همین چارچوب است، برای ساخت دیتابیس، جدول و ستون در برنامه نویسی PHP باید از دستور CREATE استفاده کنیم، CREATE یکی از دستورات آشنا در زبان SQL است که به کمک آن می توانیم دیتابیس، جدول و ستون های مورد نظر را با اجرای کدهای برنامه نویسی در MySQL و به کمک اکستنشن های متداول ایجاد کنیم، دقت کنیم همانطور که قبلا گفتیم پایگاه داده MySQL با اکستنشن MySQL دو مفهوم جداگانه هستند، عبارت اول اشاره به سیستم مدریت پایگاه داده MySQL دارد اما عبارت دوم یک برنامه کوچک نرم افزای در مفسر PHP است که به این زبان قابلیت ارتباط با پایگاه داده را می دهد، اکستنشن MySQL اولین اکستنشن PHP برای این منظور بوده و در حال حاضر منسوخ و قدیمی شده است، لذا بهتر است از اکستنشن های جدید مانند MySQLi یا PDO استفاده کنیم.
ساخت دیتابیس با دستور CREATE DATABASE در MySQL
علاوه بر شیوه دستی ساخت دیتابیس از طریق برنامه phpMyAdmin، کدهای PHP نیز چنین قابلیتی دارند که با برنامه نویسی بتوانیم دیتابیس مورد نیازمان را بسازیم، این کار با دستور CREATE DATABASE صورت می گیرد که در زیر دیتابیس فرضی dbname را به این روش ساخته ایم.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
//ساخت دیتابیس
$sql = "CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci";
$query = mysqli_query($conn, $sql);
if(!$query) {
echo "Creating Database dbname: Error! " . mysqli_error($conn);
} else {
echo "Creating Database dbname: OK!";
}
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
//ساخت دیتابیس
$sql = "CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci";
$conn->query($sql);
if(!$conn) {
echo "Creating Database dbname: Error! " . $conn->error;
} else {
echo "Creating Database dbname: OK!";
}
}
//پایان اتصال
$conn->close();
?>
همان طور که در نمونه کد بالا ملاحظه می کنید دستور CREATE به تنهایی کاربردی ندارد و در کنار پارامترهای دیگر کامل می شود، برای ساخت دیتابیس باید در کنار CREATE از دستور DATABASE استفاده کنیم، همچنین برای اعمال تنظیمات دلخواه پارامترهای دیگری مانند DEFAULT CHARACTER SET و COLLATE استفاده شده که کارکرد مشابهی با حالت دستی در برنامه phpMyAdmin دارند، این دستورات یونیکد پیش فرض دیتابیس را تعیین می کنند که برای سازگاری با زبان فارسی باید مقدار utf8 و utf8_persian_ci برای آنها در نظر گرفته شود، ci در عبارت utf8_persian_ci مخفف case-insensitive و به معنی غیرحساس به حروف بزرگ و کوچک است.نکته 1: قبل از اجرای دستورات باید اطلاعات مورد نیاز را در قسمت username و password مطابق با حساب کاربری پایگاه داده در کد جایگزین کنیم، در لوکال هاست نام کاربری معمولا root و بدون کلمه عبور است، همچنین در قسمت dbname می توانیم نام دیگری برای پایگاه داده در نظر بگیریم.
نکته 2: تابع mysqli_query و متد query در اکستنشن MySQLi جهت اجرای فرآیند پرس و جو بین کدهای PHP و دیتابیس MySQL کاربرد دارند.
ساخت جدول و ستون با دستور CREATE TABLE
پس از ساختن دیتابیس با دستور CREATE DATABASE نوبت به ایجاد جداول و ستون ها است که این کار با دستور CREATE TABLE انجام می شود، در نمونه کد زیر با استفاده از این دستور جدول فرضی tblname را با چند ستون id، name و status ساخته ایم.
برنامه نویسی رویه ای (Procedural):
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
//ساخت جدول و ستون ها
$sql = "CREATE TABLE tblname(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
status TINYINT(1) DEFAULT 0)
ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci";
$query = mysqli_query($conn, $sql);
if(!$query){
echo "Creating Table tblname: Error! " . mysqli_error($conn);
} else{
echo "Creating Table tblname: OK!";
}
}
//پایان اتصال
mysqli_close($conn);
?>
برنامه نویسی شی گرا (Object-oriented):<?php
//اتصال به دیتابیس
$conn = new mysqli("localhost", "username", "password", "dbname");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . $conn->errno . ' - ' . $conn->error;
exit;
} else {
echo "PHP & MySQL Connection: Ok!<br>";
//ساخت جدول و ستون ها
$sql = "CREATE TABLE tblname(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
status TINYINT(1) DEFAULT 0)
ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci";
$conn->query($sql);
if(!$conn) {
echo "Creating Table tblname: Error! " . $conn->error;
} else {
echo "Creating Table tblname: OK!";
}
}
//پایان اتصال
$conn->close();
?>
در کد بالا پرس و جوی ساخت یک جدول با سه ستون id، name و status را اجرا کرده ایم و به هر ستون ویژگی هایی را متناسب با نوع و کارکرد آن نسبت داده ایم که در این مرحله از آموزش صرفا جهت آشنایی اولیه به توضیح مختصر آنها می پردازیم، مواردی مانند INT، VARCHAR و TINYINT نشان دهنده نوع داده ای است که در آن ستون ذخیره می شوند، در خصوص انواع داده در MySQL در آموزش های بعدی به طور خاص صحبت خواهیم کرد، پارامتر NOT NULL به این معنی است که ردیف های اطلاعاتی به صورت پیش فرض NULL یا خالی نیستند، AUTO_INCREMENT نیز به این معنی است که مقدار این ستون با هر INSERT اطلاعات به صورت پیش فرض افزایش پیدا می کند و نیازی به مقداردهی آن در هنگام اجرای پرس و جو نیست، پارامتر PRIMARY KEY نیز یک سیستم در MySQL است که کلید اصلی را مشخص می کند، منظور از این عبارت ایجاد کلیدهای منحصر به فرد جهت دسته بندی بهتر و جستجوی سریع تر در بین ردیف های اطلاعاتی است، در این سیستم هر ردیف در هر جدول یک کلید منحصر به فرد خواهد داشت که در هنگام بازیابی اطلاعات کار جستجو بسیار سریع تر خواهد شد، از پارامتر DEFAULT برای درج یک مقدار پیش فرض به صورت خودکار استفاده می شود، در این نمونه کد عدد 0 به عنوان مقدار پیش فرض برای ستون status در نظر گرفته شده است، پارامتر ENGINE=MyISAM برای تنظیم موتور MyISAM به عنوان موتور پیش فرض برای جدولی است که قصد ایجاد آن را داریم (Syntax آن در برخی نسخه ها به صورت TYPE=MyISAM است، در MySQL به طور معمول دو موتور MyISAM و INNODB استفاده می شوند).نکته 1: تابع mysqli_connect در دستور CREATE TABLE چهار آرگیومنت دارد که مورد آخر نام دیتابیسی است که می خواهیم در آن جدول ساخته شود، در اینجا دیتابیسی که قبلا با دستور CREATE DATABASE ساخته بودیم (dbname) را به عنوان آرگیومنت چهارم درج کرده ایم.
نکته 2: هر درخواستی که از دیتابیس انجام می شود را در اصطلاح پرس و جو یا Query می نامند، MySQL در پرس و جوهای خود از زبانی به نام SQL استفاده می کند که مخفف Structured Query Language است.

استفاده از WHERE در پرس و جوی MySQL
حذف مقادیر از MySQL با دستور DELETE
استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL
آموزش MySQL، سیستم مدیریت پایگاه داده
نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL


بنده یک صفحه ای دارم که یکسری اطلاعات رو از کاربر میگیره. و بعد من تو پی اچ پی اطلاعات دریافت میشه و وقتی دارم تو پایگاه درج میکنم ارور میده (خطا در ثبت که قسمت دوم شرط هست). خیلی فوریه لطفا راهنمایی کنید. با تشکر
حذف شد
mysqli_error($conn);
را مطابق نمونه به کدهای خود اضافه کنید، سپس می توان در مورد رفع آن اقدام کرد.نقل قول:
کافی است یک پرس و جو با SELECT بنویسید و با استفاده از WHERE ستون هایی که مقادیر آنها برابر عبارت مورد نظر هست را انتخاب کنید، سپس با استفاده از تابع COUNT یا توابعی مانند mysql_num_rows می توانید تعداد ردیف های برگردانده شده را بدست آورید (اگر از صفر بیشتر بود، یعنی عبارت وجود دارد).
این تابع حتی اگه کلمه وجود نداشته باشه یک رو حداقل بر میگردونه تابع مشابه این نیست ؟
کئوری که اجرا میکنم اینه
$check = mysql_query("SELECT COUNT(name) FROM user WHERE name ='$item'");
$num_rows = mysql_num_rows($check );
نکته: اکستنشن MySQL قدیمی و منسوخ شده است، توصیه می شود از MySQLi یا PDO استفاده کنید.
این صفحه ای که ساختم فرم ثبت نامه که خطا میده! خواهش میکنم کمکم کنید!!!
http://s4.picofile.com/file/8165059634/register.php.html
می خوام وقتی مثلا کتاب را از منو انتخاب کردم و نوشته هام رو ارسال کردم فقط در ستون کتاب در دیتابیس بره امیدوارم منظورم را متوجه شده باشید لطفا بگید از چه کدی برای این شرط استفاده کنم لطفا یک نمونه کد در مورد این سوال من مطرح کنید ممنون
INSERT INTO cars (car, color) VALUES (NULL, 'white')
در این مثال برای ستون car مقدار NULL و برای ستون color مقدار white تنظیم شده.اما جهت اطلاعات بیشتر، نوع داده برای ذخیره تصاویر در MySQL نوع BLOB به معنی Binary Large OBject است که برای نمایش تصویر باید یک دستور header تنظیم کنید:
header("Content-type: image/jpeg");
echo $row['image_column'];
توجه کنید که قبل از این دستورات هیچ خروجی نباید به مرورگر ارسال شود (شامل کاراکترهای نامرئی BOM نیز می شود)، روش دیگر نمایش، استفاده از data:image و base64_encode است:<?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row['image_column']) . '">'; ?>
من میخوام بدونم وقتی که ما فرم رو insert می کنیم یه نگاهی به پایگاه داده بندازه ببینه و اگه اطلاعات فرم مشابه بودن insert انجام نشه مثل فرم عضویت وقتی نام کاربری توی پایگاه داده یه بار ثبت شده باشه insert انجام نشه و بگه ( این نام کاربری قبلا ثبت شده است ) البته این یه مثاله برای من این مشکل زیاد پیش میاد
لطفا توضیح بدید و مثال بزنید
مثال:
$check_user = mysql_query("SELECT * FROM register WHERE username='$username'")
or die(mysql_error());
if(mysql_num_rows($check_user) > 0){
echo "این نام کاربری قبلا ثبت شده است!";
}
نکته: اکستنشن MySQL قدیمی و منسوخ شده است، توصیه می شود از MySQLi یا PDO استفاده کنید.با تشکر
در درجه اول باید Server connection collation دیتابیس را
utf8_persian_ci
انتخاب کنید، سپس مراحل زیر را انجام دهید:- از متاتگ زیر در تمام صفحات استفاده کنید:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- علاوه بر دیتابیس، جداول و ستون ها را نیز با یونیکدutf8_persian_ci
بسازید.- پس از اتصال با دیتابیس، پرس و جوی زیر را هم اجرا کنید:
SET NAMES 'utf8'
- اگر مشکل همچنان حل نشد، فایل های خود را با ویرایشگر ++Notepad باز کرده و سپس از قسمت Encoding گزینه Encoding UTF-8 without BOM را انتخاب و فایل خود را مجددا ذخیره نمائید.اگه به همه سوالام پاسخ بديد خيلي خيلي ممنون ميشم.
1. آيا انتخاب نوع فيلدهاي جدول درست بوده؟ (الف. ميخوام وقتي كاربر توي فرم گزينه php را انتخاب ميكنه كلمه php در فيلد مهارت در جدول ذخيره بشه. آيا nvarchar مناسبه؟
ب. وقتي كاربر روي قسمت date كليك ميكنه يه تقويم با جي كوئري براش باز ميشه و از توي تقويم روز مورد نظرش رو انتخاب ميكنه و در نتيجه توي textbox اينگونه نمايش داده ميشه: پنجشنبه 16مرداد. من ميخوام دقيقا همين عبارت پنجشنبه 16مرداد در فيلد date جدول ذخيره بشه. براي اين كار nvarchar مناسبه؟)
2. آيا فقط بايد براي تگ optionخصوصيتname رابنويسم يا تگ selectهم خصوصيتnameرااحتياج دارد؟
3. در جدول user فيلدي به نام case ازنوع nvarchar دارم كه مقدار فيلد به طور پيش فرض "كارآموز" گذاشتم و در فرم براي فيلد case ازكابر چيزي دريافت نميكنم، درنتيجه در دستور insert براي case عبارت null را نوشتم. آيا null صحيح است يا بايد ' ' بگذارم.
ببخشيد اگه سوالام طولاني شد. اگه جواب بدين دعاگوي شما ميشم.
2- ضمن توجه به پاسخ سوال اول، توصیه می کنیم تاریخ همواره در ستونی از نوع DATETIME و به صورت یکی از فرمت های استاندارد MySQL به میلادی ذخیره شود، مگر اینکه تاریخ صرفا حالت نمایشی داشته باشد که در این صورت شبیه یک رشته متنی است و می توان در انواع دیگر مثل nvarchar ذخیره شود.
3- عبارت NULL به صورت دستوری در MySQL مفهوم خاصی دارد و شامل ردیف هایی است که واقعا NULL باشند، اما اگر فیلدی با یک رشته متنی (حتی خالی) پر شده باشد، دیگر NULL نیست و باید از علامت '' استفاده کنیم، لذا با جمیع این شرایط می توان این دو را ترکیب کرد:
SELECT * FROM table WHERE col IS NULL OR col = '';
چگونه می توانم از طریق دکمه submit به پایگاه داده متصل شوم .
البته من از یک سایت ساز استفاده می کنم که امکانات کاملی دارد ولی برای لود کردن اطلاعات از یک پایگاه داده مشکل دارم .
ممنون می شوم اگر مرا راهنمایی فرمایید
نام برنامه مورد نظر من wysiwyg web builder است .
<?php echo $this->currentUser->username; ?>
<br>
<?php echo getenv("remote_addr"); ?>
<script>
TIME = new Date();
DIFF = new Date() - TIME ;
INTV = window.setInterval("Show_Clock()",1000) ;
function Show_Clock(){
TIME = new Date(new Date() - DIFF) ;
HH = TIME.getHours() ;
MM = TIME.getMinutes() ;
SS = TIME.getSeconds() ;
document.getElementById('CLOCK').innerHTML=((HH<10 )? "0"+HH:HH) + ":" + ((MM<10)? "0"+MM:MM) + ":" + ((SS<10)? "0"+SS:SS);
}
</script>
<span id="CLOCK"></span>
اینم کد نمایش نام کاربر و ساعت و آی پی . میخوام اینا را توی جدولی به اسم report ذخیره کنم . چیکار باید بکنم ؟ راهنمایی میفرمایید ؟<?php
$user_name = $this->currentUser->username;
?>
سایر مراحل نیاز به آشنایی با MySQL و به فرض دستور INSERT INTO دارد.نکته: برای بدست آوردن تاریخ، زمان و... باید از کدهای PHP استفاده کنید، در مثال شما، از جاوا اسکریپت استفاده شده که برای هدفتان کاربرد ندارد.
لطفا نحوه ذخیره DBMS ها (مثل data werehouse که چند بعدی) هستند در database ها (که دو بعدی) به چه صورت است؟ لطفا به صورت توضیحی برای ما که آشنا به زبان برنامه نویسی نیستیم بفرمایید
چطوری میتونم یه آرایه رو دیتابیس ذخیره کنم ؟
من یه textarea دارم که میخوام هر چیزی اینجا نوشته شد بعدا تو یه صفحه دیگه نشونش بدم
ولی چیزی که تو دیتابیس ذخیره میشه و بعدا هم نشون میده یا کلمه array یا 10 هستش
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.