ถ้าเราเขียน Update เป็น Function แล้วใช้ sqlsrv_query เราจะปรับให้มัน เป็นแบบ มี 3 พารามิเตอร์ยังไงคะ
ถ้าเราเขียน Update เป็น Function แล้วใช้ sqlsrv_query เราจะปรับให้มัน เป็นแบบ มี 3 พารามิเตอร์ยังไงคะ
จากตัวอย่างที่พี่วินทำไว้ให้ดู
Code (PHP)
$sql = "UPDATE customer SET
Name = ? ,
Email = ? ,
CountryCode = ? ,
Budget = ? ,
Used = ?
WHERE CustomerID = ? ";
$params = array($_POST["txtName"], $_POST["txtEmail"], $_POST["txtCountryCode"], $_POST["txtBudget"], $_POST["txtUsed"],$_POST["txtCustomerID"]);
$stmt = sqlsrv_query( $conn, $sql, $params);
Code (PHP)
//แก้ไขข้อมูล
function update($table,$command,$condition){
$sql = "UPDATE $table SET $command $condition";
$result = sqlsrv_query($conn,$sql);
return $result;
}
ตอนนี้มัน Error
Notice: Undefined variable: conn in D:\xampp\htdocs\mywork\include\function1.php on line 91
Warning: sqlsrv_query() expects parameter 1 to be resource, null given in D:\xampp\htdocs\mywork\include\function1.php on line 91Tag : PHP, Ms SQL Server 2016, Bootstrap Framework, XAMPP, Windows
ประวัติการแก้ไข 2018-08-22 15:43:05
Date :
2018-08-22 15:41:39
By :
nottpoo
View :
903
Reply :
3
คุณส่งอะไรเข้าไปใน function ล่ะครับ ดูโค๊ดก็ไม่มีอะไรผิด
จะผิดก็ string ที่เป็น parameter แหล่ะครับ
แต่วิธีเขียนแบบนี้มันมีช่องโหว่เยอะถ้าต้นทางไม่ดี
เขียนให้ได้แบบ ตัวอย่างครับ (โค๊ดแรก) เพราะ ป้องกัน sql injection ได้ มีความปลอดภัยสูง
แต่ก่อนอื่นต้องเข้าใจว่า เครื่องหมาย ? มีไว้ทำอะไร ดูจากคำถามแล้ว น่าจะยังไม่รู้ว่ามันเอาไว้ทำอะไรหรือเปล่า
ถ้ารู้ ก็ควรจะแปลงโค๊ดให้ได้ตามตัวอย่างแล้ว
เครื่องหมายคำถาม จะถุกแทนที่ด้วย ค่าใน parameter ที่ถูกส่งเข้าไป
ดังนั้น จำนวนเครื่องหมายคำถาม ต้องเท่ากับจำนวน element ใน parameter นะครับ
Date :
2018-08-22 17:26:44
By :
Chaidhanan
ตัวแปร $conn ไม่ได้ถูกประกาศไว้ function
วิธีแก้ไข
global $conn; อันนี้ต้องมีการประกาศตัวแปรนี้ที่ main code ก่อนนะครับ
หรือ เขียน function ให้รับ ตัวแประ $connไว้ด้วย
function update($conn, $table,$command,$condition){
Date :
2018-08-23 10:37:44
By :
Chaidhanan
Load balance : Server 02