สอบถาม PHP แบบ PDO เชื่อต่อฐานข้อมูลแบบ Class Function เป็นแนวทางหน่อยครับ
สอบถาม PDO mysql แบบ class function หน่อยครับ
พอดีมือใหม่ PHP PDO ครับ
ไม่ขึ้นอะไรเลยไม่ทราบมีแนวทางการเขียนโค้ส PHP แบบ PDO เชื่อต่อฐานข้อมูลแบบ Class function เป็นแนวทางไหมครับ
Code (PHP) - function.php
<?php
class DBConnection{
private $conn;
public function __construct($user, $password, $database, $host) {
$this->user = $user;
$this->password = $password;
$this->database = $database;
$this->host = $host;
}
public function Connect(){
try {
$this->conn = new PDO("mysql:host=$host;dbname=$database", $user, $password);
$this->conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$this->conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (Exception $e) {
echo 'ERROR: ' . $e->getMessage();
}
}
public function Query($sql){
return $this->conn->prepare($sql);
}
}
public function List_IDCard() {
$db = new DBConnection();
$result = $db->Query("SELECT * FROM idcard ORDER BY id");
$result->execute();
return $result;
}
?>
Code (PHP) - config.php
<?php
ini_set('display_errors',0);
error_reporting(0);
define("DB_HOST","localhost");
define("DB_USER","root");
define("DB_NAME","DatabaseName");
define("DB_PASS","Password");
?>
Code (PHP) - index.php
<?php
session_start();
require_once 'config.php';
require_once 'function.php';
date_default_timezone_set('Asia/Bangkok');
$db = new DBConnection(DB_USER, DB_PASS, DB_NAME, DB_HOST);
?>
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta charset="utf-8">
</head>
<body>
<?php
$stmt = $db->List_IDCard();
while($objResult = $stmt->fetch( PDO::FETCH_ASSOC )){
echo $objResult[IDNumber]."<BR>";
}
?>
</body>
</html>
Tag : PHP, MySQL, Appserv
Date :
2022-02-16 18:04:13
By :
KenJeRoKung
View :
1645
Reply :
6
Code (PHP)
public function Query($sql){
return $this->conn->prepare($sql);
}
// ย้ายมาไว้ตรงนี้
public function List_IDCard() {
$result = $this->conn->Query("SELECT * FROM idcard ORDER BY id");
$result->execute();
return $result;
}
}
/* อยู่ผิดที่
public function List_IDCard() {
$db = new DBConnection();
$result = $db->Query("SELECT * FROM idcard ORDER BY id");
$result->execute();
return $result;
}
*/
Date :
2022-02-16 19:13:17
By :
Chaidhanan
เวลาเขียนโค้ดให้เปิดแสดง error ทุกอย่างด้วย
ไม่ใช่ไปปิดมันเอาไว้
ที่มันไม่ขึ้นอะไรเลยเพราะมันมี error ที่ทำงานไม่ได้ แล้วมันจะแจ้งให้เรารู้แต่เรากลัวไม่กล้ารับรู้ ไปปิดมันเอาไว้ นึกว่าดีแต่เป็นการทำที่ผิด ผิด ผิด!
ถ้าจะปิด error บน production site หรือบนหน้าเว็บที่ใช้งานจริง ก็ควรต้องมีการเปิด error log เพื่อจะให้มันแจ้งผ่าน log ไม่มาเปิดเผยให้ผู้ใช้ดู
แล้วก็ใน error หรือการแจ้งเตือนมันจะมีระดับต่างๆ ตั้งแต่ notice, warning ไปจนถึงหนักๆคือ error
ระดับอื่นๆที่อยู่ก่อนระดับ error มันคือความผิดพลาดที่ยังทำงานต่อไปได้ แต่ควรแก้ไขอย่างยิ่ง
ส่วนระดับ error นี่คือทำงานต่อไม่ได้แล้ว ต้องแก้ไขเท่านั้น! (Execution of the script is halted. )
อ้างอิง https://www.php.net/manual/en/errorfunc.constants.php
อ่านแล้วหวังว่าจะเห็นประโยชน์ของมัน
แล้วก็เลิกอุดปาก error ในขั้นตอน development กันสักทีเถิดได้โปรด นะ ท่านผู้สอนทั้งหลายไม่ว่าใครเว็บไหนก็ตาม.
Date :
2022-02-16 19:28:24
By :
mr.v
และเนื่องจากพบปัญหาย่อยหลายอย่าง เช่น กำหนดตัวแปรในการเชื่อมต่อ PDO ไม่ถูก, กำหนดคอลัมน์ id ในการแสดงผลไม่ถูก, ไปใช้ constant แทนที่จะใช้ array key เลยเขียนใหม่เลย
ก็ลองไปเทียบเคียงเอาเองนะครับ
Code (PHP)
<?php
class DBConnection
{
private $conn;
public function __construct($user, $password, $database, $host)
{
$this->user = $user;
$this->password = $password;
$this->database = $database;
$this->host = $host;
$this->Connect();
}
public function Connect()
{
try {
$this->conn = new PDO("mysql:host=$this->host;dbname=$this->database", $this->user, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (Exception $e) {
echo 'ERROR: ' . $e->getMessage();
}
}
public function Query($sql)
{
return $this->conn->prepare($sql);
}
public function List_IDCard()
{
$result = $this->Query("SELECT * FROM datetime_subtable ORDER BY id");
$result->execute();
return $result;
}
}
Code (PHP)
<?php
session_start();
require_once 'config.php';
require_once 'function.php';
date_default_timezone_set('Asia/Bangkok');
$db = new DBConnection(DB_USER, DB_PASS, DB_NAME, DB_HOST);
?>
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta charset="utf-8">
</head>
<body>
<?php
$stmt = $db->List_IDCard();
while ($objResult = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $objResult['id'] . "<BR>";
}
?>
</body>
</html>
Date :
2022-02-16 19:53:21
By :
mr.v
Load balance : Server 04