ከቅጽ ወደ mysql ውሂብ በማከል ላይ። በ PHP በኩል ምስሎችን ወደ MySQL የውሂብ ጎታ ማከል። ፒፒፒ ወደ mysql የውሂብ ጎታ ግቤት። ተግባራዊ ምሳሌዎች

በዚህ ጽሑፍ ውስጥ ልነግርዎ እፈልጋለሁ የገባውን ውሂብ ወደ ፎርሙ ወደ ዳታቤዝ እንዴት ማስተላለፍ እንደሚቻል. እና ስለዚህ ሁለት መስኮች የሚኖረን ቀላል ቅጽ እንፈጥራለን-የተጠቃሚው ስም እና ኢሜል

የአንተ ስም፥
የእርስዎ ኢሜይል፡-


ይህ ቅጽ አዲስ ተጠቃሚን ለመመዝገብ፣ ዜና ለመላክ፣ ስታቲስቲክስ ለመሰብሰብ ወይም ለማንኛውም ነገር... በአጠቃላይ ተጠቃሚው ውሂቡን በዚህ ቅጽ ውስጥ ያስገባል፡ ስም እና ኢሜል፣ አዝራሩን ጠቅ ያድርጉ ከዚያም ውሂቡ ላይ ጠቅ ያድርጉ። ወደ ፒኤችፒ ስክሪፕት ይገባል፡-

$ስም = $_POST["ስም"]; $email = $_POST["ኢሜል"]; $result = mysqli_query("ወደ ተጠቃሚ (ስም፣ ኢሜል) አስገባ VALUES("$name", "$email")"); ከሆነ ($ውጤት) ("ውሂቡ በተሳካ ሁኔታ ተቀምጧል!") ሌላ ("ስህተት ተፈጥሯል፣እባክዎ እንደገና ይሞክሩ" በማለት አስተጋባ።)


በዚህ ጽሑፍ ውስጥ ምን እየሆነ ነው? አሁን እንወቅበት!
ወደ ቅጹ የገባው ውሂብ የPOST ዘዴን በመጠቀም ወደ php ስክሪፕት (ከላይ ተጽፏል) እና የ$_POSTን አለምአቀፍ አደራደር በመጠቀም ውሂቡ ወደ ተለዋዋጮች $name እና $email ይመሰረታል፡

$ስም = $_POST["ስም"]; $email = $_POST["ኢሜል"];


ተለዋዋጮቹ ወደ ዳታቤዝ ለመግባት ዝግጁ ከሆኑ በኋላ ጥያቄ እንፈጥራለን። በመጀመሪያ ግን የእርስዎ ስክሪፕቶች ከመረጃ ቋቱ ጋር የተገናኙ መሆን አለባቸው፡ ከዳታቤዝ ጋር እንዴት እንደሚገናኙ በዚህ ክር ውስጥ ጽፌ ነበር።ጥያቄው ራሱ ይህንን ይመስላል።

$result = mysqli_query("ወደ ተጠቃሚ (ስም፣ ኢሜል) አስገባ VALUES("$name", "$email")");


በዚህ ኮድ ውስጥ፣ የሚከተሉት ተለዋዋጮች በተጠቃሚ ሠንጠረዥ ውስጥ ወደሚገኙ ስም እና የኢሜል ህዋሶች እንደሚታከሉ አመልክተናል፡-$name እና $email።
በመቀጠል ፣ ሁሉም ነገር በጥሩ ሁኔታ ከሄደ ፣ ከሁኔታው መልእክት ይደርሰናል-

ውሂብ በተሳካ ሁኔታ ተቀምጧል!


ማንኛውም ችግሮች ከተፈጠሩ እና ውሂቡ ካልገባ የስህተት መልእክት ይደርሰናል፡-

ስህተት ተከስቷል፣ እባክዎ እንደገና ይሞክሩ።


ይኼው ነው!

*** *** *** *** ***

ከተፈለገ መረጃ ለማስገባት ተጨማሪ መስኮችን ማከል ይችላሉ, ለምሳሌ ወደ ተጠቃሚው ከተማ ለመግባት መስክ ማከል አለብን. ቀደም ሲል ዝግጁ የሆነ ስክሪፕት አለን (ከላይ የተጻፈ), አሁን አንድ መስክ ብቻ እንጨምራለን የእርስዎ ከተማ, ተለዋዋጭውን እንጠራዋለን: $ ከተማ . እና በመረጃ ማስገቢያ ቅጽ ውስጥ ፣ ከዚያ በኋላ

የእርስዎ ኢሜይል፡-


አክል፡

የእርስዎ ከተማ፡-


በ php ስክሪፕት ውስጥ፣ በኋላ፡-

$email = $_POST["ኢሜል"];


አክል፡

$ከተማ = $_POST["ከተማ"];


እና በእርግጥ በጥያቄው ውስጥ እንጨምረዋለን ፣ እንደዚህ

$result = mysqli_query("ወደ ተጠቃሚ (ስም, ኢሜል, ከተማ) አስገባ VALUES ("$name", "$email", "$city")");


መጨረስ ያለብዎት ይህ ነው፡-
የግቤት ቅጽ፡

የአንተ ስም፥
የእርስዎ ኢሜይል፡-
የእርስዎ ከተማ፡-


ስክሪፕት፡

$ስም = $_POST["ስም"]; $email = $_POST["ኢሜል"]; $ከተማ = $_POST["ከተማ"]; $result = mysqli_query("ወደ ተጠቃሚ (ስም, ኢሜል, ከተማ) አስገባ VALUES ("$name", "$email", "$ city")"); ከሆነ ($ውጤት == እውነት) ("ውሂቡ በተሳካ ሁኔታ ተቀምጧል!") ሌላ ("ስህተት ተከስቷል እባክህ እንደገና ሞክር" በማለት አስተጋባ።)


እንደሚመለከቱት, ምንም የተወሳሰበ ነገር የለም! አስፈላጊ ከሆነ, ሌላ መስክ, እና ሌላ, እና ሌላ ... ማከል ይችላሉ.

ይህ መመሪያ ከእርስዎ የውሂብ ጎታ እንዴት ማስተዳደር እንደሚችሉ ያሳየዎታል ፒኤችፒስክሪፕት ታጠናለህ ወደ MySQL ሰንጠረዥ መዝገብ ማከል ፣በመጠቀም ፒኤችፒ ኮድ. ከመጀመርዎ በፊት ከ PHP እና ከዳታቤዝ ጋር አብሮ የመስራትን መሰረታዊ ደረጃዎችን የሚሸፍኑትን ሌሎች አጋዥ ስልጠናዎቻችንን ይመልከቱ - ከPHP ወደ MySQL ዳታቤዝ ማገናኘት።

ከመጀመርዎ በፊት የሚከተሉትን ያረጋግጡ:

  • ወደ የእርስዎ ማስተናገጃ መቆጣጠሪያ ፓኔል መድረስ

ደረጃ 1 - ጠረጴዛ መፍጠር

በመጀመሪያ ደረጃ, ለእርስዎ ውሂብ ሰንጠረዥ መፍጠር አለብን. ይህ እርስዎ ሊያደርጉት የሚችሉት በጣም ቀላል ሂደት ነው phpMyAdminከእርስዎ ማስተናገጃ የቁጥጥር ፓነል. በቀደመው አጋዥ ስልጠና የ MySQL ዳታቤዝ የመፍጠር ሂደትን አስቀድመን ሸፍነነዋል፣ ስለዚህ ያንን ክፍል እዚህ እንዘለዋለን።

ወደ phpMyAdmin ገጽ ከገቡ በኋላ እንደዚህ ያለ ምስል ያያሉ-

ስም ያለው ጠረጴዛ እንፍጠር ተማሪዎችለእኛ የውሂብ ጎታ u266072517_ስም. አዝራሩን በመጠቀም አዲስ ጠረጴዛ መፍጠር ይችላሉ ሰንጠረዥ ይፍጠሩ. ከዚህ በኋላ ለጠረጴዛዎ ሁሉንም አስፈላጊ መረጃዎች የሚያስገቡበት አዲስ ገጽ ያያሉ:

ጠረጴዛን ለመፍጠር ቀላሉ መንገድ ይህ ነው ፣ በሰንጠረዡ / የውሂብ ጎታ መዋቅር ላይ እና ለእያንዳንዱ መስክ ምን መቼቶች ጥቅም ላይ እንደሚውሉ የበለጠ መረጃ ለማግኘት እባክዎን ኦፊሴላዊውን የ phpMyAdmin ሰነድ ይመልከቱ።

ስለምንጠቀምባቸው መስኮች አንዳንድ ቀላል ማብራሪያዎች እነሆ፡-

  • ስምየመስክህ ስም ነው። በጠረጴዛዎ አናት ላይ ይታያል.
  • ዓይነት- እዚህ የሜዳውን አይነት ማዘጋጀት ይችላሉ. ለምሳሌ, እንመርጣለን ቫርቻርምክንያቱም እዚህ ስም ያለው ሕብረቁምፊ ማስገባት አለብን (ፊደሎች ያሉት እንጂ ቁጥሮች አይደሉም)።
  • ርዝመት/እሴቶች- በዚህ መስክ ውስጥ የሚገቡትን ከፍተኛውን ርዝመት ለማዘጋጀት ይጠቅማል።
  • መረጃ ጠቋሚ- ለ "መታወቂያ" መስክ "ዋና" ኢንዴክስ እንጠቀማለን. ጠረጴዛ ሲፈጥሩ አንድ የመታወቂያ መስክ እንዲኖር ይመከራል. በሰንጠረዦች መካከል ያሉ ግንኙነቶች ሲዋቀሩ በሠንጠረዥ ውስጥ መዝገቦችን ለመጠቆም ይጠቅማል. እዚህም ልብ ሊባል ይችላል "A_I"፣ ማ ለ ት ራስ-ሰር መጨመር. ይህ ቅንብር መረጃ ጠቋሚውን (1,2,3,4...) በራስ-ሰር ይጨምራል.

ጠቅ ያድርጉ አስቀምጥእና ጠረጴዛዎ ይፈጠራል.

ደረጃ 2 - ፒኤችፒ ኮድ ይፍጠሩ እና ወደ MySQL ሰንጠረዥ ግቤት ያክሉ

አማራጭ 1 - MySQLi ዘዴ

በመጀመሪያ ደረጃ, በቀደመው አጋራችን መሰረት ከመረጃ ቋቱ ጋር ግንኙነት መፍጠር ያስፈልግዎታል. ከዚህ በኋላ ወደ MySQL ሠንጠረዥ መዝገብ ለመጨመር በ SQL ጥያቄ መቀጠል እንችላለን - አስገባ. የግንኙነት እና የማስገባት ዘዴ ያለው የተሟላ የኮድ ምሳሌ ይኸውልዎ።

". mysqli_error($conn);) mysqli_close($conn);?>

ስለዚህ የኮዱ የመጀመሪያ ክፍል (መስመሮች 3 – 18 ) የመረጃ ቋቱን ግንኙነት ማቋቋሚያ ክፍልን ተመልከት። በዚህ ክፍል እንደገና አንሄድም ፣ እያንዳንዱ መስመር ምን ማለት እንደሆነ ለማወቅ ከፈለጉ ፣ ከዳታቤዝ ጋር እንዴት እንደሚገናኙ የቀድሞ መመሪያችንን ይመልከቱ።

በመስመሩ እንጀምር 19 :

$sql = "ወደ ተማሪዎች አስገባ (ስም፣ የአያት ስም፣ ኢሜይል) VALUES ("ቶም"፣ "ቪያል"፣ " [ኢሜል የተጠበቀ]")";

ይህ በጣም አስፈላጊው የኮድ መስመር ነው, በዚህ ማጠናከሪያ ትምህርት ውስጥ የምንሸፍነውን ሁሉ ያደርጋል - በመረጃ ቋቱ ውስጥ ወደ MySQL ሰንጠረዥ መዝገብ ማከል. አስገባበተጠቀሰው MySQL የውሂብ ጎታ ሰንጠረዥ ላይ መዝገብ የሚጨምር አገላለጽ ነው። በእኛ ምሳሌ ውስጥ መረጃን ወደ ጠረጴዛ እንጨምራለን ተማሪዎች.

ወደ ፊት በመሄድ፣ በቅንፍ ውስጥ፣ እሴቶች የምንጨምርባቸው የሰንጠረዥ መስኮችን እንገልፃለን፡ (ስም ፣ የአያት ስም ፣ ኢሜል). ውሂቡ በተወሰነ ቅደም ተከተል ይታከላል. ከጻፍን (ኢሜል ፣ የአያት ስም ፣ ስም), እሴቶቹ በተለየ ቅደም ተከተል ይታከላሉ.

የትርጉም ቀጣይ ክፍል እሴቶች. እዚህ ቀደም በተገለጹት መስኮች ውስጥ እሴቶቻችንን እናዘጋጃለን. ስለዚህ, እያንዳንዱ መስክ የራሱን ዋጋ ይቀበላል. ለምሳሌ, በእኛ ሁኔታ ውስጥ እንደዚህ ያለ ነገር ይሆናል. ስም = Thom, የአያት ስም = Vial, ኢሜይል = [ኢሜል የተጠበቀ] .

ልብ ሊባል የሚገባው ነገር እዚህ እየፈጠርን ነው የ SQL ጥያቄፒኤችፒ ኮድ በመጠቀም። የ SQL መጠይቆች በጥቅሶች ውስጥ መያያዝ አለባቸው። በእኛ ምሳሌ፣ በጥቅሶቹ መካከል ያለው እና ከ$sql = በኋላ የሚመጣው ሁሉም ነገር የSQL ጥያቄ ነው።

የኮዱ ቀጣይ ክፍል ( 20 – 22 መስመሮች) ጥያቄያችንን ያቀርባል እና የጥያቄውን ስኬት ያረጋግጣል፡-

ከሆነ (mysqli_query($conn፣$sql)) ("አዲስ መዝገብ በተሳካ ሁኔታ ተፈጥሯል")

መጠይቁ በትክክል ከተሰራ የስኬት መልእክት ይታያል።

እና የመጨረሻው ክፍል ( 22 – 24 መስመሮች) ጥያቄያችን ካልተሳካ ሌላ መልእክት አሳይ፡-

ሌላ ("ስህተት:" .$sql አስተጋባ።
mysqli_error($conn);)

ይህ ኮድ የሆነ ችግር ከተፈጠረ የስህተት መልእክት ያሳየናል።

አማራጭ 2 - ፒኤችፒ የውሂብ ነገር ዘዴ (P HP D ata O bject)

ልክ እንደ ቀድሞው ምሳሌ, በመጀመሪያ ከመረጃ ቋቱ ጋር ግንኙነት መፍጠር አለብን, ይህም አዲስ የ PDO ነገር ሲፈጥር ነው - ያለፈው አጋዥ ስልጠና ይህ እንዴት እንደሚከሰት ይናገራል. የ MySQL ዳታቤዝ ግንኙነት የPDO ነገር ስለሆነ ጥያቄውን ለማዘጋጀት እና ለማስኬድ የተለያዩ የPDO 'ዘዴዎች' (የአንድ የተወሰነ ነገር አካል የሆኑ ተግባራትን) መጠቀም አለብን። የእቃ ዘዴዎች እንደሚከተለው ይባላሉ.

$ the_Object -> ዘዴው ();

PDO የ SQL ኮድ ከማስፈጸምዎ በፊት 'እንዲዘጋጁ' ይፈቅድልዎታል። የSQL መጠይቁ ከመሮጥ በፊት ይገመገማል እና ይስተካከላል። ስለዚህ, ቀላል የ SQL መርፌ ጥቃት በቅጽ መስክ ውስጥ የ SQL ኮድን በመሙላት ሊከናወን ይችላል. ለምሳሌ፥

// ተጠቃሚ ይህንን በመግቢያ ቅጽ thom የተጠቃሚ ስም መስክ ላይ ይጽፋል"፤ DATABASE የተጠቃሚ_ጠረጴዛን ያንሱት፤ // የመጨረሻው መጠይቅ ይህ ይሆናል"ከተጠቃሚ_ሠንጠረዥ WHERE የተጠቃሚ ስም = ቶም"፤ DATABASE user_table ;

የ SQL ኮድ በአገባብ ትክክል ስለሆነ ሴሚኮሎን ያደርገዋል የ DATABASE የተጠቃሚ_ጠረጴዛን ጣልአዲስ የSQL መጠይቅ እና የተጠቃሚዎች ሰንጠረዥ ተሰርዟል። የተዘጋጁ መግለጫዎች ቁምፊዎችን አይፈቅዱም እና ; ዋናውን ጥያቄ እና መመሪያውን ለመሙላት ዳታባሴን ጣልፈጽሞ አይገደልም.

ሁሌምከPDO ጋር ከውሂብ ጎታ ሲልኩ ወይም ሲቀበሉ የተዘጋጁ መጠይቆችን ይጠቀሙ።

የተዘጋጁ መግለጫዎችን ለመጠቀም, ዘዴውን የሚጠራ አዲስ ተለዋዋጭ መፍጠር ያስፈልግዎታል አዘጋጅ()በመረጃ ቋቱ ላይ።

በትክክለኛ መልክ, ኮዱ እንደዚህ ይመስላል:

$servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystufpwd"; $sql = "mysql: አስተናጋጅ=$የአገልጋይ ስም;dbname=$database;"; $dsn_አማራጮች =; // PDOን በመጠቀም ከ MySQL ዳታቤዝ ጋር አዲስ ግንኙነት ፍጠር፣ $my_Db_Connection የነገር ሙከራ ነው ($my_Db_Connection = አዲስ PDO($sql፣ $username፣ $password፣ $dsn_Options))፤ አስተጋባ "በተሳካ ሁኔታ ተገናኝቷል"፤ ) ያዝ (PDOException $ ስህተት) ( አስተጋባ "የግንኙነት ስህተት፡" $ Last_Name = "Val"; $email = " [ኢሜል የተጠበቀ]"; // እዚህ ዳታቤዙን ነገር አዘጋጅ() ዘዴ የሚጠራ ተለዋዋጭ እንፈጥራለን // ማሄድ የሚፈልጉት የ SQL ጥያቄ እንደ መለኪያው ገብቷል እና ቦታ ያዢዎች እንደሚከተለው ተጽፈዋል፡ placeholder_name $my_Insert_Statement = $my_Db_Connection-> አዘጋጅ ("ወደ ተማሪዎች አስገባ (ስም ፣ የአያት ስም ፣ ኢሜል) እሴቶች (: የመጀመሪያ ስም ፣ የመጨረሻ ስም ፣ ኢሜል)"); ፓራሜተር ከላይ ባለው መግለጫ ውስጥ ያለው ቦታ ያዥ ነው - ሁለተኛው ግቤት $my_Insert_Statement -> bindParam (: የመጀመሪያ ስም ፣ $ የመጀመሪያ ስም) ፣ $ my_Insert_Statement -> bindParam (: የመጨረሻ ስም ፣ $ የመጨረሻ ስም) ፣ bindParam (: ኢሜል) , $email); // አሁን የገለጽነውን ውሂብ በመጠቀም መጠይቁን ያስፈጽሙ // የአፈፃፀሙ () ዘዴው ከተሳካ እና ካልሆነ ሐሰት ይመልሳል, ይህም ( $my_Insert_Statement-> ከሆነ የራስዎን መልዕክቶች እንዲጽፉ ያስችልዎታል. አስፈፃሚ ()) (“አዲስ መዝገብ በተሳካ ሁኔታ ተፈጥሯል”) ሌላ (“መዝገብ መፍጠር አልተቻለም”) ) // በዚህ ጊዜ የተለዋዋጮችን ውሂብ መለወጥ እና ተጨማሪ ውሂብ ወደ የውሂብ ጎታ ለመጨመር እንደገና ማስፈጸም ይችላሉ $first_Name = "John"; $የመጨረሻ_ስም = "ስሚዝ"; $email = " [ኢሜል የተጠበቀ]"; $my_Insert_Statement -> መፈጸም (); // ተለዋዋጮቹ ተለውጠዋል ((My_Insert_Statement->execute()) ከሆነ ("አዲስ መዝገብ በተሳካ ሁኔታ ተፈጥሯል") ሌላ ("መዝገብ መፍጠር አልተቻለም" በማለት አስተጋባ። )

በመስመሮች 28, 29 እና ​​30 ላይ ዘዴውን እንጠቀማለን ቢንድፓራም()የውሂብ ጎታ ነገር. አንድ ዘዴም አለ bindValue(), ከቀዳሚው የተለየ.

  • ቢንድፓራም () -ይህ ዘዴ ዘዴው በሚሆንበት ጊዜ ውሂቡን ይቆጥራል ማስፈጸም()ተሳክቷል ። ለመጀመሪያ ጊዜ ስክሪፕቱ ወደ ዘዴው ይደርሳል ማስፈጸም()እሱ ያያል $ የመጀመሪያ_ስም“ቶም” ማጣቀሻዎች፣ ያንን ዋጋ ያስራል እና መጠይቁን ያስፈጽማል። ስክሪፕቱ ወደ ዘዴው ለሁለተኛ ጊዜ ሲደርስ ማስፈጸም()፣ እሱ ያንን ይመለከታል $ የመጀመሪያ_ስምአሁን “ጆን” ማጣቀሻዎች፣ ያንን እሴት ያያይዙ እና መጠይቁን ከአዲሱ እሴት ጋር እንደገና ያስኬዳል። ጥያቄውን አንድ ጊዜ እንደፈጠርን እና ከዚያም በስክሪፕቱ ውስጥ በተለያዩ ቦታዎች ላይ የተለያዩ መረጃዎችን እንደምንተካ መረዳት አስፈላጊ ነው.
  • bindValue () -ይህ ዘዴ ተራውን እንደደረሰ ውሂቡን ያሰላል. ከዋጋው $ የመጀመሪያ_ስምዘዴው ላይ በደረስንበት ጊዜ ወደ "ቶም" ተቀናብሯል bindValue(), ዘዴውን ሲደውሉ ጥቅም ላይ ይውላል ማስፈጸም()$my_Insert_Statement.

እባክዎን ተለዋዋጭውን እንደገና እየተጠቀምን መሆኑን ልብ ይበሉ $ የመጀመሪያ_ስምእና ለሁለተኛ ጊዜ አዲስ እሴት ይስጡት. ይህን ስክሪፕት ከሄዱ በኋላ የውሂብ ጎታዎን ካረጋገጡ፣ ሁለቱም የተሰጡት ስሞች ከዚህ ተለዋዋጭ እሴት ጋር ተቃራኒ ይሆናሉ $ የመጀመሪያ_ስምበዚህ ጽሑፍ መጨረሻ ላይ ከ "ዮሐንስ" ጋር እኩል ይሆናል. ያስታውሱ ፒኤችፒ የአንድ ስክሪፕት ይዘት ከመሮጡ በፊት ይገመግማል።

ስክሪፕትህን በመተካት ከቀየርክ bindParamላይ bindValue, "Thom Vial" ወደ MySQL የውሂብ ጎታ ሁለት ጊዜ ይጨምራሉ እና ጆን ስሚዝ ችላ ይባላሉ.

ደረጃ 3 - ስኬትን ያረጋግጡ እና አጠቃላይ ጉዳዮችን ይፍቱ

በ MySQL ዳታቤዝ ውስጥ ያስሄድነው ጥያቄ የተሳካ ከሆነ የሚከተለውን መልእክት እናያለን፡-

የተለመዱ ስህተቶችን መፍታት

MySQLi

በሌላ በማንኛውም አጋጣሚ ከላይ ካለው መልእክት ይልቅ የስህተት መልእክት ይታያል። ለምሳሌ፣ በኮዳችን ውስጥ አንድ የአገባብ ስህተት እንስራ እና የሚከተለውን እናገኛለን፡-

እንደምናየው የኮዱ የመጀመሪያ ክፍል ጥሩ ነው ፣ ግንኙነቱ በተሳካ ሁኔታ ተቋቁሟል ፣ ግን የ SQL ጥያቄያችን ሲተገበር ውድቀት አጋጥሞታል።

"ስህተት፡ ወደ ተማሪዎች አስገባ (ስም፣ የአያት ስም፣ ኢሜይል) እሴቶች ("ቶም"፣ "ቪል"፣ " [ኢሜል የተጠበቀ]") በእርስዎ የSQL አገባብ ላይ ስህተት አለብዎት፤ ትክክለኛውን አገባብ ከ«(ስም፣ የአያት ስም፣ ኢሜይል) VALUES ("Thom", "Vial", "" አጠገብ ለመጠቀም ከእርስዎ MySQL አገልጋይ ስሪት ጋር የሚዛመደውን መመሪያ ይመልከቱ። [ኢሜል የተጠበቀ]")" በመስመር 1"

የእኛ ስክሪፕት እንዲወድቅ የሚያደርግ የአገባብ ስህተት ነበር። ስህተቱ እዚህ ነበር፡-

$sql = "ወደ ተማሪዎች አስገባ (ስም፣ የአያት ስም፣ ኢሜይል) VALUES ("ቶም"፣ "ቪያል"፣ " [ኢሜል የተጠበቀ]")";

እንደምታየው፣ በቅንፍ ፋንታ የተጠማዘዙ ማሰሪያዎችን እየተጠቀምን ነው። ይህ ትክክል አይደለም እና በእኛ ስክሪፕት ውስጥ የአገባብ ስህተትን ያስከትላል።

PDO

በፒዲኦ ግንኙነት መስመር 7 ላይ የስህተት አያያዝ ሁነታ 'ሁሉንም የማይካተቱትን ለማሳየት' ተቀናብሯል። ይህንን ከስክሪፕቱ ካስወገዱ እና ጥያቄው ካልተሳካ ምንም የስህተት መልእክት አይደርስዎትም። ልዩ ሁኔታዎች ከነቃ፣ ያጋጠሙ ልዩ ችግሮች ይታያሉ። ይህ በአጠቃላይ ስክሪፕት ሲዘጋጅ በተሻለ ሁኔታ ጥቅም ላይ ይውላል፣ ምክንያቱም የውሂብ ጎታዎን እና ያልተፈቀደለት የውሂብዎን መዳረሻ ከሚያገኝ ማንኛውም ሰው መደበቅ የሚፈልጉትን የጠረጴዛ ስሞች ሊያሳይ ይችላል። ከላይ ባለው ሁኔታ፣ ከቅንፍ ይልቅ የተጠማዘዙ ማሰሪያዎች ጥቅም ላይ ሲውሉ ስህተቱ ከዚህ በታች ይመስላል።

ገዳይ ስህተት፡ ያልተያዘ ልዩ "PDOException" ከመልዕክት "SQLSTATE: የአገባብ ስህተት ወይም የመዳረሻ ጥሰት: 1064 በ SQL አገባብዎ ላይ ስህተት አለብዎት; ከ "(ስም ፣ የአያት ስም ፣ ኢሜል) VALUES ("ቶም" ፣ "ቪያል" ፣ "" አጠገብ ለመጠቀም ትክክለኛው አገባብ ከ MySQL አገልጋይ ሥሪት ጋር የሚዛመደውን መመሪያ ይመልከቱ። [ኢሜል የተጠበቀ]")" በመስመር 1"

ሌሎች ሊያጋጥሙዎት የሚችሉ ችግሮች፡-

  • መስኮቹ የተገለጹት በስህተት ነው (የሌሉ መስኮች ወይም የተሳሳቱ ስሞች)።
  • የእሴት አይነት ከመስክ አይነት ጋር አይዛመድም። ለምሳሌ የቁጥርን ዋጋ ለመመደብ ስንፈልግ 47 መስክ ስምእሴቱ ሕብረቁምፊ መሆን ስለሚጠበቅበት ስህተት ይደርስብናል። ነገር ግን፣ በጥቅሶች ውስጥ ቁጥር ከገለጹ፣ ለምሳሌ፣ “47” , ምንም ስህተት አይኖርም ምክንያቱም ቁጥራችን በዚህ መስክ ውስጥ እንደ ሕብረቁምፊ ይጻፋል.
  • በሌለበት ሠንጠረዥ ውስጥ ውሂብ ለማስገባት የተደረገ ሙከራ ወይም የሰንጠረዡን ስም የፊደል አጻጻፍ ስህተት።

እነዚህ ሁሉ ስህተቶች የስህተት ማስተካከያ መመሪያዎችን በመከተል ወይም የስህተት ምዝግብ ማስታወሻን በማጣራት ሊስተካከሉ ይችላሉ።

ውሂቡን በተሳካ ሁኔታ ካከልን በኋላ በመረጃ ቋታችን ውስጥ ማየት አለብን። ስንመለከት ውሂባችንን ወደ ላይ የጨመርንበት የሰንጠረዡ ምሳሌ ይኸውና። phpMyAdmin.

ማጠቃለያ

በዚህ መማሪያ ውስጥ እንዴት እንደሚጠቀሙ ተምረዋል ወደ MySQL ሠንጠረዥ መዝገብ ለመጨመር PHP ኮድበመጠቀም MySQLiእና PDO. የተለመዱ ስህተቶችን እና መፍትሄዎቻቸውንም ተመልክተናል. ወደ MySQL ዳታቤዝ ለመጨመር የ PHP ኮድን እንዴት መጠቀም እንዳለቦት ማወቅ ፕሮግራም ማድረግን እየተማርክም ሆነ የራስህ ድህረ ገጽ በመፍጠር ረገድ ጠቃሚ ይሆናል።

በዚህ ጽሑፍ ውስጥ ረድፎችን ወደ MySQL የውሂብ ጎታ ለማስገባት PHP እንዴት መጠቀም እንደሚቻል እንመለከታለን።

ደረጃ 1 - ጠረጴዛ መፍጠር

በመጀመሪያ ለውሂቡ ሰንጠረዥ መፍጠር ያስፈልግዎታል. ይህ በእርስዎ ማስተናገጃ የቁጥጥር ፓነል ውስጥ phpMyAdmin በመጠቀም ሊከናወን የሚችል ቀላል ሂደት ነው።

ወደ phpMyAdmin ከገቡ በኋላ ይህንን በይነገጽ ያያሉ-

በ u266072517_ስም ዳታቤዝ ውስጥ "ሰንጠረዥ ፍጠር" የሚለውን ቁልፍ በመጫን ተማሪዎች የሚባል ሠንጠረዥ እንፍጠር። ከዚህ በኋላ ሁሉንም አስፈላጊ የሰንጠረዥ መለኪያዎች ያዘጋጀንበትን አዲስ ገጽ እናያለን-

ይህ በጠረጴዛ ላይ ጥቅም ላይ ሊውል የሚችል እና ስለ ሠንጠረዥ/ዳታቤዝ አወቃቀሩ ተጨማሪ መረጃ ማግኘት የሚችል ቀላሉ ቅንብር ነው።

የአምድ አማራጮች፡-

  • ስም በሠንጠረዡ አናት ላይ የሚታየው የአምድ ስም ነው.
  • ዓይነት - የአምድ ዓይነት. ለምሳሌ፣ ቫርቻርን የመረጥነው የሕብረቁምፊ እሴቶችን ስለምናስገባ ነው።
  • ርዝመት/እሴቶች - በዚህ አምድ ውስጥ ያለ ግቤት ሊኖረው የሚችለውን ከፍተኛ ርዝመት ለመለየት ይጠቅማል።
  • መረጃ ጠቋሚ - ለ "መታወቂያ" መስክ "ዋና" ኢንዴክስ ተጠቀምን. ጠረጴዛ ሲፈጥሩ አንድ አምድ ብቻ እንደ ዋና ቁልፍ ለመጠቀም ይመከራል. በሠንጠረዡ ውስጥ ያሉትን መዝገቦች ለመዘርዘር ጥቅም ላይ ይውላል እና ሰንጠረዡን ሲያዘጋጁ ያስፈልጋል. እንዲሁም “A_I”ን አስተውያለሁ፣ ትርጉሙም “ራስ-ሰር ጭማሪ” - የመዝገብ ቁጥሮችን (1፣2፣3፣4...) በራስ ሰር የመመደብ መለኪያ።
    "አስቀምጥ" የሚለውን ቁልፍ ጠቅ ያድርጉ እና ጠረጴዛው ይፈጠራል.

ደረጃ 2፡ ውሂብ ወደ MySQL ለማስገባት PHP ኮድ ይፃፉ።

አማራጭ 1 - MySQLi ዘዴ

በመጀመሪያ ከመረጃ ቋቱ ጋር ግንኙነት መመስረት ያስፈልግዎታል። ከዚህ በኋላ የ SQL INSERT ጥያቄን እንጠቀማለን. የሙሉ ኮድ ምሳሌ፡-

". mysqli_error($conn);) mysqli_close($conn);?>

የኮዱ የመጀመሪያ ክፍል (መስመር 3 - 18) ከመረጃ ቋቱ ጋር ለመገናኘት የታሰበ ነው።

በመስመር ቁጥር 19 እንጀምር፡-

$sql = "ወደ ተማሪዎች አስገባ (ስም፣ የአያት ስም፣ ኢሜይል) VALUES ("ቶም"፣ "ቪል"፣ " [ኢሜል የተጠበቀ]")";

ወደ MySQL የውሂብ ጎታ ውስጥ ውሂብ ያስገባል. INSERT INTO በተወሰነ ሰንጠረዥ ላይ ውሂብን የሚጨምር መግለጫ ነው። በእኛ ምሳሌ፣ ውሂብ ወደ ተማሪዎች ሠንጠረዥ ታክሏል።

ቀጥሎ እሴቶቹ የገቡባቸው የአምዶች ዝርዝር ነው፡ ስም፣ የአያት ስም፣ ኢሜይል። ውሂቡ በተጠቀሰው ቅደም ተከተል ይታከላል. (ኢሜል ፣ የአያት ስም ፣ ስም) ብንፅፍ ኖሮ እሴቶቹ በተለየ ቅደም ተከተል ይታከሉ ነበር።

የሚቀጥለው ክፍል የ VALUES መግለጫ ነው። እዚህ የአምዶች እሴቶችን እንገልጻለን-ስም = Thom, የአያት ስም = Vial, ኢሜይል = [ኢሜል የተጠበቀ].

የ PHP ኮድን በመጠቀም ጥያቄውን አቅርበናል። በፕሮግራም ኮድ የ SQL መጠይቆች በጥቅሶች ማምለጥ አለባቸው። የሚቀጥለው ኮድ (መስመር 20-22) ጥያቄያችን የተሳካ መሆኑን ያረጋግጣል፡-

ከሆነ (mysqli_query($conn፣$sql)) ("አዲስ መዝገብ በተሳካ ሁኔታ ተፈጠረ"፤)

ይህ ኮድ ጥያቄው የተሳካ መሆኑን የሚያመለክት መልእክት ያሳያል።

እና የመጨረሻው ክፍል (መስመር 22 - 24) ጥያቄው ካልተሳካ ማሳወቂያ ያሳያል፡-

ሌላ ( "ስህተት:" . $sql አስተጋባ።
mysqli_error($conn);)

አማራጭ 2 - PHP Data Object (PDO) ዘዴ

መጀመሪያ አዲስ የ PDO ነገር በመፍጠር ከመረጃ ቋቱ ጋር መገናኘት አለብን። ከእሱ ጋር ስንሰራ የተለያዩ የ PDO ዘዴዎችን እንጠቀማለን. የነገር ዘዴዎች እንደሚከተለው ይባላሉ.

$ the_Object -> ዘዴው ();

PDO የ SQL ኮድ ከመፈጸሙ በፊት "እንዲዘጋጁ" ይፈቅድልዎታል. የSQL መጠይቁ ይገመገማል እና ከመሮጥ በፊት "ታርሟል"። ለምሳሌ፣ በቀላሉ የSQL ኮድን ወደ ቅጽ መስክ በማስገባት ቀላል የSQL መርፌ ጥቃት ሊፈጸም ይችላል። ለምሳሌ፥

ይህ በአገባብ ትክክል SQL ስለሆነ ሴሚኮሎን DROP DATABASE ተጠቃሚን አዲስ የSQL መጠይቅ ያደርገዋል እና የተጠቃሚው ጠረጴዛ ተጥሏል። የተዘጋጁ አገላለጾች (የታሰሩ ተለዋዋጮች) ሴሚኮሎኖች እና ጥቅሶች የመጀመሪያውን ጥያቄ እንዲያቋርጡ አይፈቅዱም ስለዚህ የ DROP DATABASE ትዕዛዙ በጭራሽ አይሰራም።

የተዘጋጁ አገላለጾችን ለመጠቀም የውሂብ ጎታውን ነገር አዘጋጅ () ዘዴ የሚጠራ አዲስ ተለዋዋጭ መጻፍ ያስፈልግዎታል።

ትክክለኛ ኮድ፡-

getMessage (); ) // ወደ ዳታቤዝ መጨመር የምንፈልገው ሰው ተለዋዋጮችን አዘጋጅ $first_Name = "Thom"; $ Last_Name = "Val"; $email = " [ኢሜል የተጠበቀ]"; // ዳታቤዝ ነገር አዘጋጅ() ዘዴ ተብሎ የሚጠራ ተለዋዋጭ ይፍጠሩ // ማሄድ የሚፈልጉት የ SQL ጥያቄ እንደ መለኪያ ገብቷል እና ቦታ ያዢዎቹ እንደሚከተለው ተጽፈዋል፡ placeholder_name $my_Insert_Statement = $my_Db_Connection->አዘጋጅ(" ወደ ተማሪዎች አስገባ (ስም ፣ የአያት ስም ፣ ኢሜል) እሴቶች (: የመጀመሪያ ስም ፣ የአያት_ስም ፣ ኢሜል)"); // አሁን የ bindParam() ዘዴን ለመጠቀም እያንዳንዱን ቦታ ያዥ የትኛውን ተለዋዋጭ እንደሚያመለክት ለስክሪፕቱ እንነግረዋለን // የመጀመሪያው ፓራሜተር ከላይ ባለው መግለጫ ውስጥ ያለው ቦታ ያዥ ነው፣ ሁለተኛው ደግሞ $my_Insert_Statement->bindParam(፡የመጀመሪያ ስም፣ $የመጀመሪያው_ስም)፣ $my_Insert_Statement->bindParam(:የመጨረሻ_ስም፣ $የመጨረሻ_ስም)፣ $my_Insert_Statement (:) ኢሜይል፣ $email)// አሁን የገለጽነውን ውሂብ በመጠቀም ጥያቄውን አስፈጽም // የአፈፃፀሙ() ዘዴ ከተሳካ እውነትን ይመልሳል፣ ካልሆነ ደግሞ ሐሰት ነው፣ይህም መልእክት ከሆነ (my_Insert_Statement->execute) የእራስዎን የማተም አማራጭ ይሰጥዎታል። )) ("አዲስ መዝገብ በተሳካ ሁኔታ ተፈጠረ") ) ሌላ ( "መመዝገብ አልተቻለም" ማስተጋባት፤) // በዚህ ነጥብ ላይ ተለዋዋጭ ውሂቡን በመቀየር በመረጃ ቋቱ ላይ ተጨማሪ መረጃን ወደ ዳታቤዝ ዳታቤዝ ለማከል መጠይቅ ማሄድ ይችላሉ $first_Name = "John"; $ Last_Name = "ስሚዝ"; $email = " [ኢሜል የተጠበቀ]"; $my_Insert_Statement -> መፈጸም (); // ተለዋዋጩ ሲቀየር እንደገና ይፈጽሙ ($ my_Insert_Statement -> ፈጻሚ ()) ("አዲስ መዝገብ በተሳካ ሁኔታ ተፈጥሯል";) ሌላ ("መመዝገብ አልተቻለም" በማለት አስተጋባ;

በመስመሮች 28፣ 29 እና ​​30፣ የውሂብ ጎታውን ነገር bindParam() ዘዴን እንጠቀማለን። በተጨማሪም የ bindValue () ዘዴ አለ, ይህም ከቀዳሚው በጣም የተለየ ነው.

  • bindParam () - ይህ ዘዴ የማስፈጸሚያ () ዘዴ ሲደረስ መረጃውን ይገመግማል. ለመጀመሪያ ጊዜ ስክሪፕቱ የማስፈጸሚያ() ዘዴ ሲደርስ $first_Name ከ"Thom" ጋር እንደሚመሳሰል ያያል:: ከዚያ ይህንን እሴት ያስራል እና ጥያቄውን ያስኬዳል። ስክሪፕቱ ወደ ሁለተኛው የማስፈጸሚያ() ስልት ሲደርስ $first_Name አሁን ከ"ጆን" ጋር እንደሚዛመድ ያያል:: ከዚያ ይህንን እሴት ያስራል እና መጠይቁን በአዲስ እሴቶች እንደገና ያስኬዳል። አንድ ጊዜ መጠይቁን እንደገለፅን እና በስክሪፕቱ ውስጥ በተለያዩ ቦታዎች ላይ በተለያዩ መረጃዎች እንደገና መጠቀማችንን ማስታወስ አስፈላጊ ነው.
  • bindValue () - ይህ ዘዴ bindValue () ከደረሰ በኋላ ውሂቡን ይገመግማል። $first_Name ወደ "ቶም" የተቀናበረ በመሆኑ bindValue() ላይ ሲደረስ የማስፈጸሚያ() ዘዴ በ$my_Insert_Statement ላይ በተጠራ ቁጥር ጥቅም ላይ ይውላል።
    የ$first_Name ተለዋዋጭን እንደገና እየተጠቀምን እና ለሁለተኛ ጊዜ አዲስ እሴት እየመደብን መሆኑን ልብ ይበሉ። ስክሪፕቱን ካስኬዱ በኋላ ሁለቱም ስሞች በመረጃ ቋቱ ውስጥ ይዘረዘራሉ፣ ምንም እንኳን በስክሪፕቱ መጨረሻ ላይ ያለው የ$ first_Name ተለዋዋጭ “ጆን” ዋጋ ቢኖረውም ። ፒኤችፒ ከመስራቱ በፊት ሙሉውን ስክሪፕት እንደሚፈትሽ ያስታውሱ።

bindParamን በ bindValue ለመተካት ስክሪፕቱን ካዘመኑት "ቶም ቪያል"ን ወደ ዳታቤዝ ሁለት ጊዜ ያስገባሉ እና ጆን ስሚዝ ችላ ይባላሉ።

ደረጃ 3 - ስኬትን ያረጋግጡ እና ችግሮችን ይፍቱ

በመረጃ ቋቱ ውስጥ ረድፎችን የማስገባት ጥያቄ የተሳካ ከሆነ የሚከተለውን መልእክት እናያለን።

የተለመዱ ስህተቶችን መላ መፈለግ

MySQLi

በሌላ በማንኛውም አጋጣሚ የስህተት መልእክት ይታያል። ለምሳሌ፣ በኮዱ ውስጥ አንድ የአገባብ ስህተት እንስራ እና የሚከተለውን እናገኛለን።

የኮዱ የመጀመሪያ ክፍል እሺ ነው፣ ግንኙነቱ በተሳካ ሁኔታ ተመስርቷል፣ ነገር ግን የSQL መጠይቁ አልተሳካም።

"ስህተት: ወደ ተማሪዎች አስገባ (ስም, የአያት ስም, ኢሜይል) ቫልዩስ ("ቶም", "ቪል", "" [ኢሜል የተጠበቀ]") በእርስዎ የSQL አገባብ ላይ ስህተት አለብዎት፤ ከ«(ስም፣ የአያት ስም፣ ኢሜይል) VALUES ("Thom", "Vial", "" አጠገብ ለመጠቀም የመብቶች አገባብ ከ MySQL አገልጋይ ሥሪት ጋር የሚዛመደውን መመሪያ ይመልከቱ። [ኢሜል የተጠበቀ]")" በመስመር 1"

ስክሪፕቱ እንዲበላሽ ያደረገ የአገባብ ስህተት ነበር። ስህተቱ እዚህ ነበር፡-

$sql = "ወደ ተማሪዎች አስገባ (ስም፣ የአያት ስም፣ ኢሜይል) VALUES ("ቶም"፣ "ቪል"፣ " [ኢሜል የተጠበቀ]")";

ከመደበኛ ይልቅ የተጠማዘዙ ማሰሪያዎችን እንጠቀም ነበር። ይህ ትክክል አይደለም እና ስክሪፕቱ የአገባብ ስህተት ፈጥሯል።

PDO

የ PDO ግንኙነት መስመር 7 የስህተት ሁነታን "ሁሉንም የማይካተቱትን ለማሳየት" ያዘጋጃል. ወደተለየ እሴት ከተዋቀረ እና ጥያቄው ካልተሳካ ምንም አይነት የስህተት መልእክት አንቀበልም።

ይህ ቅንብር ስክሪፕት ሲዘጋጅ ብቻ ነው ጥቅም ላይ መዋል ያለበት። ሲነቃ ለደህንነት ሲባል በጣም የተደበቁ የውሂብ ጎታ እና የሰንጠረዥ ስሞች ሊታዩ ይችላሉ። ከላይ በተገለጸው ሁኔታ፣ ከመደበኛ ቅንፍ ይልቅ የተጠማዘዙ ማሰሪያዎች ጥቅም ላይ ሲውሉ የስህተት መልዕክቱ ይህን ይመስላል።

ገዳይ ስህተት፡ Uncaughtexception "PDOException" በመልዕክት "SQLSTATE: የአገባብ ስህተት ወይም የመዳረሻ መጣስ: 1064 በ SQL አገባብዎ ላይ ስህተት አለብዎት; ከ«(ስም፣ የአያት ስም፣ ኢሜይል) VALUES ("ቶም", "ቪያል", "" አጠገብ ለመጠቀም የመብቶች አገባብ ከ MySQL አገልጋይ ስሪትዎ ጋር የሚዛመደውን መመሪያ ይመልከቱ። [ኢሜል የተጠበቀ]")" በመስመር 1"

ሌሎች ሊሆኑ የሚችሉ ችግሮች፡-

  • አምዶች በትክክል አልተገለጹም (የሌሉ ዓምዶች ወይም የተሳሳተ የአምድ ስሞች)።
  • አንድ የእሴት አይነት ለሌላ ዓይነት አምድ ተመድቧል። ለምሳሌ, ቁጥር 47 በስም አምድ ውስጥ ለማስገባት ከሞከሩ, ስህተት ይደርስብዎታል. ይህ አምድ የሕብረቁምፊ እሴት መጠቀም አለበት። ነገር ግን በጥቅሶች ውስጥ ቁጥር ከገለፅን (ለምሳሌ "47") ይሰራል ምክንያቱም ሕብረቁምፊ ነው.
  • በሌለበት ሠንጠረዥ ውስጥ ውሂብ ለማስገባት ሙከራ ተደርጓል። በሠንጠረዡ ስም ላይ የፊደል አጻጻፍ ስህተትም ነበር።

ውሂቡን በተሳካ ሁኔታ ካስገባን በኋላ ወደ ዳታቤዝ መጨመሩን እናያለን። ከታች ያለው መረጃ የተጨመረበት ሰንጠረዥ ምሳሌ ነው።

የመጨረሻው ዝመና: 11/1/2015

ውሂብ ለማከል የ"INSERT" አገላለጽ ይጠቀሙ፡-

$query = "ወደ ምርቶች ውስጥ አስገባ VALUES(NULL, "Samsung Galaxy III","Samsumg"");

የ"INSERT" መግለጫ አንድ ረድፍ ወደ ጠረጴዛ ያስገባል። ከ INTO ቁልፍ ቃሉ በኋላ የሰንጠረዡ ስም ይጠቁማል እና ከ VALUES በኋላ የሁሉም አምዶች የእሴቶች ስብስብ በቅንፍ ውስጥ ይታያል። በሠንጠረዡ ውስጥ ሦስት ዓምዶች ስላሉን, ሦስት እሴቶችን እንጠቁማለን.

በቀደመው ርዕስ ላይ ጠረጴዛን ስንፈጥር የሚከተለውን የአምዶች ቅደም ተከተል ገለጽን መታወቂያ ፣ ስም ፣ ኩባንያ ፣ በዚህ ሁኔታ NULL ዋጋ ለመታወቂያው አምድ ፣ “Samsung Galaxy III” ለስም እና “Samsumg” ተላልፏል። ለኩባንያው.

የመታወቂያው አምድ AUTO_INCREMENT ተብሎ ስለሚገለጽ፣ የተወሰነ የቁጥር እሴት መስጠት የለብንም እና NULL እሴትን ማለፍ እንችላለን እና MySQL ቀጣዩን የሚገኘውን እሴት ለአምዱ ይመድባል።

አሁን አንድ ምሳሌ በመጠቀም ውሂብ ማከልን እንመልከት። ፋይል እንፍጠር መፍጠር.phpከሚከተለው ይዘት ጋር፡-

ውሂብ ታክሏል።"; ) // ግንኙነቱን ዝጋ mysqli_close($link); )?>

አዲስ ሞዴል ያክሉ

ሞዴል አስገባ፡

አምራች፡



እዚህ ፣ ከመረጃ ቋቱ ጋር የመግባቢያ ኮድ ከቅጾቹ ተግባራዊነት ጋር ተጣምሯል-ቅጹን በመጠቀም ፣ ወደ የውሂብ ጎታ ለመጨመር ውሂብ እናስገባለን።

ደህንነት እና MySQL

እዚህ የ mysqli_real_escape_string() ተግባር ተጠቅመናል። በሕብረቁምፊ ውስጥ ቁምፊዎችን ለማምለጥ ጥቅም ላይ ይውላል, እሱም በ SQL መጠይቅ ውስጥ ጥቅም ላይ ይውላል. ለማምለጥ የግንኙነት ነገር እና ሕብረቁምፊን እንደ መለኪያዎች ይወስዳል።

ስለዚህም፣ የቁምፊ ማምለጫ ሁለት ጊዜ እንጠቀማለን፡ በመጀመሪያ የ mysqli_real_escape_string() ተግባርን በመጠቀም sql አገላለጽ፣ እና በመቀጠል htmlentities() ተግባርን በመጠቀም ለኤችቲኤምኤል። ይህ በአንድ ጊዜ ራሳችንን ከሁለት አይነት ጥቃቶች እንድንጠብቅ ያስችለናል፡- XSS ጥቃቶች እና SQL መርፌ።

እና ተሰጥቷል
. አሁን እንዴት እንደሆነ እንነጋገራለን PHP ን በመጠቀም ምስሎችን ወደ MySQL ዳታቤዝ ያክሉ.

ምስል ለመጨመር በ MySQL ዳታቤዝ ውስጥ መስክ መፍጠር

ለመጀመር፣ ለዚያ ማለት እፈልጋለሁ ምስሎችን በ MySQL የውሂብ ጎታ ውስጥ ማከማቸትየ BLOB አይነት እንደ መነሻ ከሠንጠረዡ መስኮች አንዱን መግለጽ አስፈላጊ ነው.

BLOB የሚለው ምህጻረ ቃል ሁለትዮሽ ትልቅ ነገርን ያመለክታል። የ BLOB የውሂብ ማከማቻ አይነት ብዙ አማራጮች አሉት።

  • TINYBLOB - እስከ 255 ባይት ማከማቸት ይችላል።
  • BLOB እስከ 64 ኪሎባይት መረጃ ማከማቸት ይችላል።
  • MEDIUMBLOB - እስከ 16 ሜጋባይት
  • LONGBLOB እስከ 4 ጊጋባይት

የውሂብ ጎታ ውስጥ የምስል ፋይል ማከማቸትፋይሉን በተለዋዋጭ ማንበብ እና በሠንጠረዡ ላይ ውሂብ ለመጨመር መጠይቅ መፍጠር ያስፈልግዎታል.

ወደ MySQL ዳታቤዝ ምስል ለመጨመር በገጹ ላይ ቅጽ በማዘጋጀት ላይ

በእኔ ሁኔታ ተግባሩ ነበር ፒኤችፒን በመጠቀም በቅጽ በኩል ሁለት ምስሎችን ወደ ዳታቤዝ ያክሉ. ሁለት መስኮች እና የማስረከቢያ ቁልፍ ያለው ቅጽ አለን።

የቅጽ ስም="ቅጽ1″ ዘዴ="ልጥፍ" ድርጊት=" add_image.php"
enctype = "ባለብዙ ክፍል/ቅጽ-ውሂብ"

ባህሪው መሆኑን ላስታውስህ ድርጊትየምስል ፋይሎችን መጫን የሚያደርገውን ፋይል ይገልጻል. ባህሪ ኢንክታይፕየቅጹ ይዘቱ እንዴት እንደተቀመጠ እና የፋይል ሰቀላ መረጃን ያሳያል። ባህሪውን እንዴት በትክክል መሙላት እንደሚችሉ ይመልከቱ ኢንክታይፕለማስወገድ .

ማስታወሻ፥ብዙ ፋይሎችን ለመስቀል የሚደረግ ድጋፍ በስሪት 3.0.10 ውስጥ ቀርቧል።

በ MySQL ዳታቤዝ ውስጥ ምስልን ለማስቀመጥ ፒኤችፒ ኮድ መጻፍ

በባህሪው ውስጥ ሁለት ፋይሎችን እየላክን ስለሆነ ስም“ተጠቃሚ ፋይል” ከሚለው ቃል በኋላ በካሬ ቅንፎች ፣ ይህ የፋይል ባህሪዎችን የያዘ ድርድር በመጠቀም ብዙ ፋይሎችን እንደምንልክ ግልፅ ያደርገዋል ።

$_FILES['የተጠቃሚ ፋይል']['ስም']

በደንበኛው ማሽን ላይ ዋናው የፋይል ስም.

$_FILES['የተጠቃሚ ፋይል']['አይነት']

የፋይሉ ማይም አይነት፣ አሳሹ ይህን መረጃ ከሰጠ።
ምሳሌ፡ "ምስል/ጊፍ" .

$_FILES['የተጠቃሚ ፋይል']['መጠን']

$_FILES['userfile']['tmp_name']

የወረደው ፋይል በአገልጋዩ ላይ የተቀመጠበት ጊዜያዊ የፋይል ስም።

የእያንዳንዱን ፋይል ዋጋዎች እንዴት ማግኘት ይቻላል?

ለምሳሌ /home/test/1.jpg እና /home/test/2.jpg የተሰየሙ ፋይሎች ተልከዋል እንበል።

በዚህ አጋጣሚ $_FILES['የተጠቃሚ ፋይል']['ስም']
ዋጋው 1.jpg ይይዛል፣
እና $_FILES["የተጠቃሚ ፋይል"]["ስም"]
- እሴት 2.jpg

በተመሳሳይ፣ $_FILES['userfile']['መጠን'] የፋይል መጠን ዋጋ 1.jpg እና የመሳሰሉትን ይይዛል። አሁን በቅጽ ባህሪው ውስጥ የተገለጸውን የ add_image.php ፋይልን ኮድ እንይ ድርጊት.

1024*1024||$image_size==0) ( $ErrorDescription="እያንዳንዱ ምስል ከ1ሜባ መብለጥ የለበትም! ምስሉ ወደ ዳታቤዝ ሊታከል አይችልም"፤ ይመልሱ ""፤ ) // ፋይሉ የደረሰ ከሆነ ከዚያ ያረጋግጡ። ስዕላዊው // እሱ (ለደህንነት ምክንያቶች) ከሆነ(ንዑስ($_FILES["userfile"]["አይነት"][$num]፣ 0፣ 5)=="ምስል") (//የፋይሉን ይዘት አንብብ። $image=file_get_contents($_FILES ["userfile"]["tmp_name"][$num]); "ምስል አልጫንክም፣ ስለዚህ አይታከልም።"; መመለስ ."; መመለስ;) መመለስ $image; )?>

ስለዚህ በዚህ ጽሑፍ ውስጥ በ MySQL የውሂብ ጎታ ውስጥ ምስልን እንዴት ማስቀመጥ እንደሚቻል ተነጋግረናል , PHP በመጠቀም።