array,portal.scitech.au.edu/.../uploads/2019/08/worksheet-6.docx · web viewint : สำหร...

12
Worksheet 6 Array, foreach Loops, and MySQL Database ขขขขขขขขขขขขขขข: Array: https://www.w3schools.com/php7/php7_arrays.asp foreach Loops: https://www.w3schools.com/php7/php7_loop_for.asp Array Array ขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขข ขขขขขขขขขขข ขขขขขขขขขขขขขข array ขขขขขขขขขขขขขขขขขขขขขข ขขขขขขขข $cars = array("Volvo", "BMW", "Toyota"); ขขขข $cars[0] = "Volvo"; $cars[1] = "BMW"; $cars[2] = "Toyota"; ขขขขขขขขขขขขขขขขขขข array ขขขขขขขขขขขขขขขขขขขขขขขขขขขขขขข ขขขขขขขขขขข ขขขขขขขข $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"); ขขขข $age['Peter'] = "35"; $age['Ben'] = "37"; $age['Joe'] = "43"; ขขขขขขขขขขขข1: ขขขขขขขขขขขขขขขข array

Upload: others

Post on 03-Dec-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

Worksheet 6

Array, foreach Loops, and MySQL Database

ขอมลเพมเตม:

Array: https://www.w3schools.com/php7/php7_arrays.asp

foreach Loops: https://www.w3schools.com/php7/php7_loop_for.asp

Array

Array คอการสรางตวแปรทสามาถเกบคาไดหลายคาภายใตชอตวแปรเดยว

การสรางตวแปร array สามารถสรางไดหลายวธ อาทเชน

$cars = array("Volvo", "BMW", "Toyota");

หรอ

$cars[0] = "Volvo";$cars[1] = "BMW";$cars[2] = "Toyota";

โดยตำาแหนงของคาใน array สามารถสรางโดยใชตวอกษรนอกจากตวเลขกได อาทเชน

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

หรอ

$age['Peter'] = "35";$age['Ben'] = "37";$age['Joe'] = "43";

แบบฝกหดท1: การเรยกใชคาใน array

<?php$cars = array("Volvo", "BMW", "Toyota");echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";

Page 2: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");echo "Peter is " . $age['Peter'] . " years old.";?>

foreach Loop

foreach Loop ใน PHP สามารถนำามาใชกบตวแปร array เพอวนคาในตวแปร array ทละหนงคา ตงแตคาแรกถงคาสดทายในแตละรอบเพอนำามาประมวลผลภายใตวงเลบพนทของ foreach loop

foreach ($array as $value) {

//code to be executed;

}

แบบฝกหดท2: การใช foreach loop เพอแสดงคาของตวแปร array $colors

<?php $colors = array("red", "green", "blue", "yellow"); 

foreach ($colors as $value) {    echo "$value <br>";}?>

MySQL Database

MySQL คอ open source ถกคดคนโดย MySQL AB ในสวเดน และตอมาถก takeover โดย Sun

Microsystems ในป  2008 และกควบรวมกบ Oracle ในป 2010 ม function การทำางานแบบ relation

database management system (RDBMS) โดยอาศย Structured Query Language (SQL) เปนภาษาในสอสาร โดยเจาตว MySQL นสามารถรนไดทงบน Linux, UNIX และ Windows ซงดวยความหลากหลายของมนแลว แตคนกยงคงใชแตกบงาน web-based ซะสวนใหญ เพราะฉะนนจงไดมการออกแบบเจาตว MySQL ใหเปนสวนหนงในระบบ open source enterprise stack หรอทเราเรยกวา ” LAMP”

เปดการทำางานของ MYSQL

Page 3: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

เปด web browser พมพ URL ท Install XAMPP เชน http://localhost ในกรณพนฐาน และเลอกเมน phpMyAdmin ดานขวาบน

Page 4: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

แบบฝกหดท3: การสราง ฐานขอมล ชอ SCHOOL และ ตารางการเกบคาชอ STUDENT โดยตองการเกบคา 4 อยาง คอ เลขรหสประจำาตว ชอ นามสกล และ อาย

1. เลอก เมน New ดานซายบน

Page 5: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

2. ตงชอฐานขอมล ระบ Collation คลกทปม Create

ตามตวอยางเราตองการสรางฐานขอมลชอ SCHOOL และ Collation รองรบภาษาไทย

3. จะเหนรายชอฐานขอมล SCHOOL ทเพงสรางเพมขนมาทเมนดานซายมอ จากนนใหระบชอของตารางทตองการสราง และจำานวนของโครงสรางขอมลทตองการ ตามตวอยางเราตองการสรางตารางชอ STUDENT เกบคา 4 อยาง คอ เลขรหสประจำาตว ชอ นามสกล และ อาย

4. จากนนใหระบรายละเอยดของ เลขรหสประจำาตว ชอ นามสกล และ อาย เพอการจดเกบ

Page 6: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

Datatype in MYSQL

VARCHAR : สำาหรบเกบขอมลประเภทตวอกษร ทกครงทเลอกชนดของฟลดเปนประเภทน จะตองม การกำาหนดความยาวของขอมลลงไปดวย ซงสามารถกำาหนดคาไดตงแต 1 - 255 ฟลดชนดน เหมาะ สำาหรบการเกบขอมลสนๆ เชน ชอ นามสกล หรอหวขอตางๆ เปนตน... ในสวนฟลดประเภทน จะ สามารถเลอก "แอตทรบวต" เปน BINARY ได โดยปกตแลวการจดเรยงขอมลเวลาสบคน (query) สำาหรบ VARCHAR จะเปนแบบ case-sensitive (ตวอกษรใหญ และเลกมความหมายแตกตางกน) แต หากระบ "แอตทรบวต" เปน BINARY ปบ การสบคนจะไมคำานงตวอกษรวาจะเปนตวใหญ หรอตวเลก

CHAR : สำาหรบเกบขอมลประเภทตวอกษร แบบทถกจำากดความกวางเอาไวคอ 255 ตวอกษร ไม สามารถปรบเปลยนไดเหมอนกบ VARCHAR หากทำาการสบคนโดยเรยงตามลำาดบ กจะเรยงขอมล แบบ case-sensitive เวนแตจะกำาหนดแอตทรบวตเปน BINARY ทจะทำาใหการเรยงขอมลเปนแบบ non

case-sensitive เชนเดยวกบ VARCHAR

TINYTEXT : ในกรณทขอความยาวๆ หรอตองการทจะคนหาขอความ โดยอาศยฟเจอร FULL TEXT

SEARCH ของ MySQL เราอาจจะเลอกทจะไมเกบขอมลลงในฟลดประเภท VARCHAR ทมขอจำากด แค 256 ตวอกษร แตเราจะเกบลงฟลดประเภท TEXT แทน โดย TINYTEXT น จะสามารถเกบขอมล ได 256 ตวอกษร ซงมองเผนๆ กไมตางกบเกบลงฟลดประเภท CHAR หรอ VARCHAR(255) เลย แต จรงๆ มนตางกนตรงท มนทำา FULL TEXT SEARCH ได

Page 7: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

TEXT : สำาหรบเกบขอมลประเภทตวอกษร เชนเดยวกบ TINYTEXT แตสามารถเกบไดมากขน โดย สงสดคอ 65,535 ตวอกษร หรอ 64KB เหมาะสำาหรบเกบขอมลพวกเนอหาตางๆ ทยาวๆ 

MEDIUMTEXT : เกบขอมลประเภทตวอกษร เชนเดยวกบ TINYTEXT แตเกบขอมลได 16,777,215 ตวอกษร

LONGTEXT : เกบขอมลประเภทตวอกษร เชนเดยวกบ TINYTEXT แตเกบขอมลได 4,294,967,295 ตวอกษร

TINYINT : สำาหรบเกบขอมลชนดตวเลขทมขนาด 8 บต ขอมลประเภทนเราสามารถกำาหนดเพมเตม ในสวนของ "แอตทรบวต" ไดวาจะเลอกเปน UNSIGNED หรอ UNSIGNED ZEROFILL โดยจะม ความแตกตางดงน

- UNSIGNED : จะหมายถงเกบคาตวเลขแบบไมมเครองหมาย แบบนจะทำาใหสามารถเกบคาได ตงแต 0 - 255

- UNSIGNED ZEROFILL : เหมอนขางตน แตวาหากขอมลทกรอกเขามาไมครบตามจำานวน หลกทเรากำาหนด ตว MySQL จะทำาการเตม 0 ใหครบหลกเอง เชน ถากำาหนดใหใสได 3 หลก แลวทำาการเกบขอมล 25 เขาไป เวลาทสบคนด เราจะไดคาออกมาเปน 025 หากไมเลอก "แอ ตทรบวต" สงทเราจะไดกคอ SIGNED นนกคอตองเสยบตนงไปเกบเครองหมาย บวก/ลบ ทำา ใหสามารถเกบขอมลไดอยในชวง -128 ถง 127 เทานน

SMALLINT : สำาหรบเกบขอมลประเภทตวเลขทมขนาด 16 บต จงสามารถเกบคาไดตงแต -32768 ถง 32767 (ในกรณแบบคดเครองหมาย) หรอ 0 ถง 65535 (ในกรณ UNSIGNED หรอไมคดเครองหมาย)ซงสามารถเลอก Attribute เปน UNSIGNED และ UNSIGNED ZEROFILL ไดเชนเดยวกบ TINYINT

MEDIUMINT : สำาหรบเกบขอมลประเภทตวเลขทมขนาด 24 บต นนกหมายความวาสามารถเกบ ขอมลตวเลขไดตงแต -8388608 ไปจนถง 8388607 (ในกรณแบบคดเครองหมาย) หรอ 0 ถง 16777215 (ในกรณทเปน UNSIGNED หรอไมคดเครองหมาย) ซงสามารถเลอก Attribute เปน UNSIGNED และ UNSIGNED ZEROFILL ไดเชนเดยวกบ TINYINT

INT : สำาหรบเกบขอมลประเภทตวเลขทมขนาด 32 บต หรอสามารถเกบขอมลไดตงแต -2147483648 ไปจนถง 2147483647 ครบ (ในกรณแบบคดเครองหมาย) หรอ 0 ถง 4294967295 (ในกรณทเปน UNSIGNED หรอไมคดเครองหมาย) ซงสามารถเลอก Attribute เปน UNSIGNED และ UNSIGNED ZEROFILL ไดเชนเดยวกบ TINYINT

BIGINT : สำาหรบเกบขอมลประเภทตวเลขทมขนาด 64 บต สามารถเกบขอมลไดตงแต - 9223372036854775808 ไปจนถง 9223372036854775807 เลยทเดยว (แบบคดเครองหมาย) หรอ 0 ถง

Page 8: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

18446744073709551615 (ในกรณทเปน UNSIGNED หรอไมคดเครองหมาย) ซงสามารถเลอก Attribute

เปน UNSIGNED และ UNSIGNED ZEROFILL ไดเชนเดยวกบ TINYINT

FLOAT[(M,D)] : ทกลาวถงไปทงหมด ในตระกล INT นนจะเปนเลขจำานวนเตม หากเราบนทกขอมล ทมเศษทศนยม มนจะถกปดทนท ดงนนหากตองการจะเกบคาทเปนเลขทศนยม ตองเลอกชนดขอฟลด เปน FLOAT โดยจะเกบขอมลแบบ 32 บต คอมคาตงแต -3.402823466E+38 ไปจนถง -1.175494351E- 38, 0 และ 1.175494351E-38 ถง 3.402823466E+38

DOUBLE[(M,D)] : สำาหรบเกบขอมลประเภทตวเลขทศนยม เชนเดยวกบ FLOAT แตมขนาดเปน 64 บต สามารถเกบไดตงแต -1.7976931348623157E+308 ถง -2.2250738585072014E-308, 0 และ 2.2250738585072014E-308 ถง 1.7976931348623157E+308

DECIMAL[(M,D)] : สำาหรบเกบขอมลประเภทตวเลขทศนยม เชนเดยวกบ FLOAT แตใชกบขอมลท ตองการความละเอยดและถกตองของขอมลสง ขอสงเกต เกยวกบขอมลประเภท FLOAT, DOUBLE

และ DECIMAL กคอ เวลากำาหนดความ ยาวของขอมลในฟลด จะถกกำาหนดอยในรปแบบ (M,D) ซงหมายความวา ตองมการระบวา จะใหม ตวเลขสวนทเปนจำานวนเตมกหลก และมเลขทศนยมกหลก เชน ถาเรากำาหนดวา FLOAT(5,2) จะ หมายความวา เราจะเกบขอมลเปนตวเลขจำานวนเตม 5

หลก และทศนยม 2 หลก ดงนนหากทำาการใส ขอมล 12345.6789 เขาไป สงทจะเขาไปอยในขอมลจรงๆ กคอ 12345.68 (ปดเศษใหมจำานวนหลก ตามทกำาหนดไว)

DATE : สำาหรบเกบขอมลประเภทวนท โดยเกบไดจาก 1 มกราคม ค.ศ. 1000 ถง 31 ธนวาคม ค.ศ.

9999 โดยจะแสดงผลในรปแบบ YYYY-MM-DD

DATETIME : สำาหรบเกบขอมลประเภทวนท และเวลา โดยจะเกบไดตงแต 1 มกราคม ค.ศ. 1000 เวลา 00:00:00 ไปจนถง 31 ธนวาคม ค.ศ. 9999 เวลา 23:59:59 โดยรปแบบการแสดงผล เวลาททำาการสบคน (query) ออกมา จะเปน YYYY-MM-DD HH:MM:SS

TIMESTAMP[(M)] : สำาหรบเกบขอมลประเภทวนท และเวลาเชนกน แตจะเกบในรปแบบของ YYYYMMDDHHMMSS หรอ YMMDDHHMMSS หรอ YYYYMMDD หรอ YYMMDD แลวแต วาจะระบคา M เปน 14, 12, 8 หรอ 6 ตามลำาดบ สามารถเกบไดตงแตวนท 1 มกราคม ค.ศ. 1000 ไป จนถงประมาณป ค.ศ. 2037

TIME : สำาหรบเกบขอมลประเภทเวลา มคาไดตงแต -838:59:59 ไปจนถง 838:59:59 โดยจะแสดงผล ออกมาในรปแบบ HH:MM:SS YEAR[(2/4)] : สำาหรบเกบขอมลประเภทป ในรปแบบ YYYY หรอ YY แลวแตวาจะเลอก 2 หรอ 4 (หากไมระบ จะถอวาเปน 4 หลก) โดยหากเลอกเปน 4 หลก จะเกบคาไดตงแต ค.ศ. 1901 ถง 2155 แต หากเปน 2 หลก จะเกบตงแต ค.ศ. 1970 ถง 2069 ขอสงเกต คาทเกบในขอมลประเภท TIMESTAMP และ YEAR นนจะมความสามารถพอๆ กบ การเกบขอมลวนเดอนป

Page 9: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

และเวลา ดวยฟลดชนด VARCHAR แตตางกนตรงท จะใชเนอทเกบขอมล นอยกวา... ทวา ฟลดประเภท TIMESTAMP นนจะมขอจำากดในเรองของเวลาทสามารถเกบได คอ จะตองอยในระหวาง 1

มกราคม ค.ศ. 1000 ไปจนถงแถวๆ ค.ศ. 2037 อยางทบอก แตหากเกบเปน VARCHAR นนจะไมตดขอจำากดน ฟลดชนด YEAR กเชนกนครบ... ใชเนอทแค 1 ไบตเทานนในการ เกบขอมล แตขอจำากดจะอยท ป ค.ศ. 1901 ถง 2155 เทานน (หรอ ค.ศ. 1970 ถง 2069 ในกรณ 2 หลก) แตหากเกบเปน VARCHAR จะไดตงแต 0000 ถง 9999 เลย อนนเลยอยทความจำาเปนมากกวาครบ (แต ดวยความทวา ปจจบนฮารดดสกราคาถกมากๆ ผมเลยไมตดใจอะไรทจะใช VARCHAR แทน เพอ ความสบายใจ ออ เพราะสมมตวากนเนอทตางกน 3 ไบต ตอ 1 ระเบยน มขอมล 4 ลานระเบยน กเพง ตางกน 12

ลานไบต หรอ 12 เมกะไบตเทานนเอง ซงหากเทยบกบปรมาณขอมลทงหมดของขอมล 4 ลานระเบยน ผมวามนตองมอยางนอยเปนกกะไบต ดงนนความแตกตางทไมกเมกะไบตจงไมมากมาย)

TINYBLOB : สำาหรบเกบขอมลประเภทไบนาร ไดแก ไฟลขอมลตางๆ, ไฟลรปภาพ, ไฟลมลตมเดย เปนตน คอไฟลอะไรกตามทอพโหลดผานฟอรมอพโหลดไฟลในภาษา HTML โดย TINYBLOB นน จะมเนอทใหเกบขอมลได 256 ไบต

BLOB : สำาหรบเกบขอมลประเภทไบนาร เชนเดยวกบ TINYBLOB แตสามารถเกบขอมลได 64KB

MEDIUMBLOB : สำาหรบเกบขอมลประเภทไบนาร เชนเดยวกบ TINYBLOB แตเกบขอมลได 16MB

LONGBLOB : สำาหรบเกบขอมลประเภทไบนาร เชนเดยวกบ TINYBLOB แตเกบขอมลได 4GB ขอสงเกต ขอมลประเภท BLOB นน แมจะมประโยชนในเรองของการเกบขอมลประเภท BINARY ใหอยกบตวฐานขอมล ทำาใหสะดวกเวลาสบคนกตาม แตมนกทำาใหฐานขอมลมขนาดใหญ เกนความจำาเปนดวย ทำาใหเกดความไมสะดวกในการสำารองฐานขอมลในกรณท มขอมลอพโหลดไป เกบมากๆ โดยปกตแลว จะใชวธการอพโหลดไปเกบไวในโฟลเดอร แลวเกบลงกไปยงไฟลเหลานน เปนฟลดชนด VARCHAR มากกวา

SET : สำาหรบเกบขอมลทเปนกลมของขอมลทยอมใหเลอกได 1 คาหรอหลายๆ คา ซงสามารถกำาหนด ไดถง 64 คา

คำ�สง SQL Command

Structured Query Language หรอ SQL คอคำาสงบรหารจดการฐานขอมล (Database) โดยเฉพาะ Relational

Database Management System (RDBMS) เชน Oracle, MySQL, Microsoft SQL Server, PostgreSQL, IBM DB2,

Microsoft Access ซงเราสามารถใช SQL command ในการสงการ หรอจดการขอมลภายในฐานขอมลเหลานได

Page 10: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

Database SQL – Insert Query

รปแบบ (Syntax)

SQL Insert into statement ขอมลทตองระบคอ table name, column name, value

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)

VALUES (value1, value2, value3,...valueN);

ตวอยาง

INSERT INTO STUDENT VALUES ( ‘111’ , ’Micheal’ , ’Jackson’ , 60)

Database SQL – Select Query

หลงจากทเราทำาการ create database รวมถง create table และ นำาขอมล insert table กนไดเรยบรอยแลว ทนเราลองมาลองดงขอมลทอยในตาราง หรอ table กลบออกมาเพอใชตามเงอนไขทเราระบกน โดยคำาสงทใชคอ SQL Select statement ซงผลลพธทไดจะเรยกวา result set ทมลกษณะเปนขอมลตาราง หรอ table ทประกอบดวย column และ row

รปแบบ (Syntax)

SQL Select statement จำาเปนตองใชขอมล column name และ table name ในการระบชดของขอมลทจะแสดง

SELECT column1, column2, columnN

FROM table_name;

ตวอยาง

SELECT ID, NAME FROM STUDENT

หรอ

SELECT * FROM STUDENT

SQL Select statement เราสามารถนำาเอา Where condition เพมตอเขาไปไดเลย เพอใหขอมลทแสดงถกกรองใหเหลอเฉพาะขอมลทอยในเงอนไขทตองการ

SELECT column1, column2, columnN

FROM table_name

WHERE [condition]

Page 11: Array,portal.scitech.au.edu/.../uploads/2019/08/Worksheet-6.docx · Web viewINT : สำหร บเก บข อม ลประเภทต วเลขท ม ขนาด 32

ในสวนของ condition เราสามารถนำาเอา SQL Operator เชน =, >, <, LIKE, NOT มาสรางเปน SQL

Expression เพอเปรยบเทยบขอมลใน table และ ขอมลทเราตองการ

ตวอยาง

SELECT * FROM STUDENT WHERE ID = ‘111’