Q - ถามเรื่องการ UPDATE INSERT ข้อมูล sql server ครับ ว่าแบบ Function กับ แบบทั่วไป แบบไหนปลอดภัยกว่า

เกี่ยวกับ ปัญหาการใช้งาน การติดตั้ง ฐานข้อมูล MySql Oracle MSSQL ect...
การเขียน คำสั่ง SQL เพื่อดึกข้อมูล บอร์ดนี้ควรระบุโครงสร้างตารางของท่านในคำถามด้วยนะ

Moderator: mindphp

ภาพประจำตัวสมาชิก
nuattawoot
PHP VIP Members
PHP VIP Members
โพสต์: 2559
ลงทะเบียนเมื่อ: 05/06/2017 9:34 am

Q - ถามเรื่องการ UPDATE INSERT ข้อมูล sql server ครับ ว่าแบบ Function กับ แบบทั่วไป แบบไหนปลอดภัยกว่า

โพสต์โดย nuattawoot » 23/09/2018 3:48 pm

ถามเรื่องการ UPDATE INSERT ข้อมูล sql server แบบไหนปลอดภัยกว่ากัน หรือ 2แบบที่บอกมานี้มันต่างกันตรงไหน
ปลอดภัย คือกันการเจะข้อมูล
แบบที่ 1
UPDATE หรือ INSERT ข้อมูลเข้า sql server แบบตรงๆ เลย

โค้ด: เลือกทั้งหมด

function rename($newname, $CharID) {
$query = $this->pdo->prepare("UPDATE UsersChars SET Gamertag=:Gamertag WHERE CharID=:CharID");
            $query->bindValue(":CustomerID", $this->CustomerID);
            $query->bindValue(":Gamertag", $newname);
            $query->bindValue(":CharID", $CharID);
            $query->execute();}


แบบที่ 2
ยิงข้อมูลเข้า Function ของ sql server /Navicat

โค้ด: เลือกทั้งหมด

function rename($newname, $CharID) {
 $connectionInfo = array("Database" => $dbName, "UID" => $userName, "PWD" => $userPassword, "MultipleActiveResultSets" => true, "CharacterSet" => "UTF-8");
            $conn = sqlsrv_connect($serverName, $connectionInfo);

            $sql = "{call [dbo].[Test_CharRename](?, ?, ?)}";
            $in_CharID = $CharID;
            $in_CustomerID = $this->CustomerID;
            $in_Gamertag = "$newname";
            $params = array(
                array($in_CustomerID, SQLSRV_PARAM_IN),
                array($in_CharID, SQLSRV_PARAM_IN),
                array($in_Gamertag, SQLSRV_PARAM_IN),
            );
}

Code Function ที่ใช้รับข้อมูล
รูปภาพ

โค้ด: เลือกทั้งหมด

ALTER PROCEDURE [dbo].[Test_CharRename]
   @in_CustomerID int,
   @in_CharID int,
   @in_Gamertag nvarchar(64)
AS
BEGIN
   SET NOCOUNT ON;

   --   
   -- note: all checks was performed in Test_CharRenameCheck   
   --

   -- rename
   declare @OldGamertag nvarchar(64)
   select @OldGamertag=Gamertag from UsersChars where CharID=@in_CharID
   update UsersChars set Gamertag=@in_Gamertag, CharRenameTime=GETDATE() where CharID=@in_CharID

   -- and log
   insert into DBG_CharRenames values (GETDATE(), @in_CustomerID, @in_CharID, @OldGamertag, @in_Gamertag)
   
   select 0 as ResultCode
END
First Bug Love you
รูปภาพ

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 9 และ บุคคลทั่วไป 0 ท่าน