आपको यूआरएल को एक्शन एट्रिब्यूट के अंदर रखना होगा जो फ़ॉर्म प्रोसेसिंग करता है, न कि फ़ंक्शन:
action="<?php updater($_POST['name'],1); ?>" // not this
action="<?php echo $_SERVER['PHP_SELF']; ?>" // path to this page
यदि यह उसी पृष्ठ पर है, तो आप इसे छोड़ सकते हैं या $_SERVER['PHP_SELF']
का उपयोग कर सकते हैं , फिर फॉर्म सबमिशन को पकड़ें। उस प्रक्रिया के अंदर, फिर अपने कस्टम फ़ंक्शन को लागू करें।
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$value = $_POST['name'];
$id = 1;
updater($value, $id);
}
एक आसान समाधान यह होगा कि इसके अंदर की स्ट्रिंग को उद्धृत किया जाए:
$sql = "UPDATE table_name SET name='$value' WHERE id=$id";
लेकिन यह SQL इंजेक्शन के लिए खुला है, सुरक्षित प्रश्नों को करने का दूसरा तरीका उन्हें तैयार करना है:
function updater($value,$id) {
// Create connection
$conn = new mysqli( 'localhost' , 'user_name' , '' , 'data_base_name' );
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE table_name SET name = ? WHERE id= ?";
$update = $conn->prepare($sql);
$update->bind_param('si', $value, $id);
$update->execute();
if ($update->affected_rows > 0) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
}