بخشی از پاورپوینت
--- پاورپوینت شامل تصاویر میباشد ----
اسلاید 1 :
Advanced SQL and PHP
- Advanced queries
- Querying more than one table
- Searching tables to find information
- Aliasing tables
- PHP functions for using query results
اسلاید 2 :
استفاده از جداول مرتبط
- SQL یک پایگاه داده رابطه ای است. یعنی می توان با چند جدول کار نمود و همزمان چندین جدول را مورد سوال قرار داد.
- استفاده از چند جدول مختلف و مرتبط بصورت همزمان دارای مزایای زیر است:
- می توان اطلاعات بیشتری را بدون تکرار کردن و اضافه کاری ذخیره نمود.
- به روز رسانی جداول و تغییر آنها راحتتر است.
- می توان انواع مختلفی از پرس و جوها را انجام داد و اطلاعات را منطبق بر نیازهای مساله بازیابی نمود.
اسلاید 3 :
- در مساله قبلی، ما تعدادی مشتری داریم که خریدهای متفاوتی را انجام می دهند. هر خرید شامل چندین آیتم است. هر آیتم یک کتاب است که ممکن است توسط چندین مشتری خریداری شود.
- تعریف جداول متفاوت به ما اجازه می دهد که از تکرار اطلاعات جلوگیری کنیم و به صورتهای مختلفی پرس و جو های مورد نیاز را انجام دهیم.
- فیلد id به ما اجازه می دهد جداول را با هم استفاده کنیم. مثلا، هر مشتری یک client_idدارد که خریدهای متفاوتی را ممکن است انجام دهد. اگر در جدول خریدها دنبال client_idبگردیم می توانیم خریدهای مشتری را پیدا کنیم.
- بطورمشابه می توانیم با جستجوی purchase_idدر جدول itemlistآیتمهای خریداری شده را مشخص کنیم.
اسلاید 4 :
برای افزایش امنیت سایت بهتر است اطلاعات مربوط به سرور mysql ، اسم پایگاه داده، اسم کاربر و رمز عبور را در فایل جداگانه ای تایپ کرده و در برنامه اصلی آنرا include کنید.
<?php
/* Save this as db_login.php (or whatever you like) and include it
in your php script. */
// Here’s the information to connect to the database.
$db_host = ‘mysql’;
$db_database=‘martin’;
$db_username=‘martin’;
$db_password=‘’;
?>
اگر حتی کسی اسم فایل فوق را بداند و بخواهد فایل فوق را ببیند، وب سرور در بین راه وجود دارد. چون این فایل هیچ دستور echo ندارد یک صفحه خالی برای او ارسال خواهد شد.
اسلاید 5 :
وصل شدن به پایگاه داده
حال در صفحه اصلی به صورت زیر عمل کنید.
<?php
include_once (‘db_login.php’);
$connection = mysql_connect($db_host, $db_username, $db_password);
if (!$connection)
{
exit(“Could not connect to the database: <br/>” .
htmlspecialchars(mysql_error()) );
}
else {
// more statements here. . .
}
?>
Note: The function ‘htmlspecialchars()’ converts special characters in a string into their HTML escape sequences (like ‘&’ into ‘&’ and so forth). This can also be used to increase the security of your code by and help thwart attacks on your database by passing it information that your client has submitted before trying to insert it in your database.
اسلاید 6 :
انجام جستجوهای MySQL از طریق PHP
جستجوهایی که از طریق PHP به mysql فرستاده می شوند کاملا مشابه هستند با این تفاوت که نیازی به تایپ ; وجود ندارد.
<?php
// Assuming a valid database connection has been established.
// Build the query string by assigning variables...
$query = $select . $column . $from . $tables . $where;
$result = mysql_query($query);
if(!$result) {
exit(“Could not query the database: <br/>” .
htmlspecialchars(mysql_error()) );
}
else {
// process the data
}
?>
اسلاید 7 :
پردازش نتایج جستجو
توابع‘mysql_fetch_row()’و‘mysql_fetch_array()’ برای خواندن نتایج مفید هستند.
<?php
// Assuming a database connection, and a valid query string.
$result = mysql_query( $query );
while ($result_row = mysql_fetch_row($result)) {
echo $result_row[2] . ‘<br/>’;
}
?>
تابع mysql_fetch_row() نتایج جستجو را بصورت یک آرایه می خواند و هر بار یک ردیف را می خواند. وقتی دیگر ردیفی وجود نداشته باشد مقدار FALSE را بر می گرداند.
اسلاید 8 :
پردازش نتایج جستجو (ادامه)
- تابع mysql_fetch_array یک ردیف از نتایج را به صورت انجمنی می خواند.
- اگر ارگومان دوم که اختیاری است یرابر MYSQL_ASSOCباشد، نتایج بر اساس اسم ستونها ایندکس می شوند و می توان یک ستون خاص را مورد سوال قرار داد.
- اگر ارگومان دوم یرابر MYSQL_NUM باشد، نتایج بر اساس شماره ستونها ایندکس می شوند و می توان یک ستون خاص را مورد سوال قرار داد.
- مقدار پیش فرض MYSQL_BOTH نیز به هر دو صورت کار می کند.
while ( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
echo $row[“title”] . ‘<br/>’;
}
اسلاید 9 :
توابع مفید دیگر در PHP/SQL
- تابع‘mysql_data_seek($result, $value)’ را می توان برای حرکت دادن اشاره گر داخلی نتایج استفاده نمود. یعنی می توان کاری کرد که ردیفهای قبلی را مورد استفاده قرار داد بدون اینکه پایگاه داده را دوباره مورد سوال قرار داد.
- تابع ‘mysql_data_seek($result, 0);’ ما را به اول نتایج می برد.
- تابع ‘mysql_num_rows ($result);’ تعداد ردیفهای جواب را بر می گرداند.
- تابع‘mysql_affected_rows();’ تعداد ردیفهایی را که در اثر اجرای دستورات INSERT, DELETE, UPDATE, یا REPLACE تغییر کرده اند را بر می گرداند.
- تابع‘mysql_insert_id();’ آخرین id که توسط AUTO_INCREMENT تولید شده است را بر می گرداند. اگر مقدار برگشتی صفر باشد یعنی AUTO_INCREMENT تغییر نکرده است.