मुझे एक घातक त्रुटि का सामना करना पड़ रहा है: मेरे संपादन PHP कोड में अनकॉटेड mysqli_SQL_exception


नमस्ते! मैं एक स्कूल प्रोजेक्ट के लिए एक सरल तालिका बना रहा हूं और मुझे यह ट्यूटोरियल उपयोगी लगा है
“https://www.youtube.com/watch?v=NqP0-UkIQS4″>
सीआरयूडी ऑपरेशंस के साथ PHP और MySQL: बनाएं, पढ़ें, अपडेट करें, हटाएं – यूट्यूब
मैंने हर चीज़ का पालन किया लेकिन जब मेरी तालिका को अद्यतन/संपादित करने की बात आती है तो इसका परिणाम हमेशा यह होता है:

घातक त्रुटि: ध्यान में न आया mysqli_sql_exception: आपके SQL सिंटैक्स में कोई त्रुटि है; लाइन पर ‘= `2023-03-22T11:50:28`, Number_Of_Items = `5`, Item = `Tempra`, Expiration_D…’ के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने MariaDB सर्वर संस्करण से संबंधित मैनुअल की जांच करें 1 C में:\xampp\htdocs\Inven\edit.php:75 स्टैक ट्रेस: ​​#0 C:\xampp\htdocs\Inven\edit.php(75): mysqli_query(Object(mysqli), ‘अद्यतन क्लिनिक_i… ‘) #1 {मुख्य} को लाइन 75 पर C:\xampp\htdocs\Inven\edit.php में डाला गया।

ख़राब अंग्रेज़ी के लिए क्षमा करें, यह मेरी पहली भाषा नहीं है और धन्यवाद।

मैंने क्या प्रयास किया है:

query($sql);
	$row = $result->fetch_assoc();

	if (!$row) {
		header("location: /inven/index.php");
		exit;
	}


$Date_Received = $row["Date_Received"];
$Number_Of_Items = $row["Number_Of_Items"];
$Item = $row["Item"];
$Expiration_Date = $row["Expiration_Date"];
$Last_Updated = $row["Last_Updated"];
$Quantity = $row["Quantity"];

}
	else{

$id = $_POST["id"];
$Date_Received = $_POST["Date_Received"];
$Number_Of_Items = $_POST["Number_Of_Items"];
$Item = $_POST["Item"];
$Expiration_Date = $_POST["Expiration_Date"];
$Last_Updated = $_POST["Last_Updated"];
$Quantity = $_POST["Quantity"];

	do {
		if ( empty($id) || 
			empty($Date_Received) || 
			empty($Number_Of_Items) || 
			empty($Item) || 
			empty($Expiration_Date) || 
			empty($Last_Updated) || 
			empty($Quantity) ) 
			{ $errorMessage= "All the Fields are required";
				break;
		} 

		$sql = "UPDATE clinic_inventory" .
			"SET Date_Received = `$Date_Received`, Number_Of_Items = `$Number_Of_Items`, Item = `$Item`, Expiration_Date = `$Expiration_Date`, Last_Updated = `$Last_Updated`, Quantity = `$Quantity`" . "WHERE id = $id";
		
			$result = mysqli_query($connection, $sql);

			if (!$result) {
			$errorMessage = "Invalid Query: " . $connection->error;
			break;
		}

			$successMessage = "Item Successfully Added";
			header("location: /inven/index.php");
			exit;
			
}	while (false);
	
}


?>

समाधान 1

SQL में, स्ट्रिंग मानों के लिए सिंगल कोट्स का उपयोग किया जाना चाहिए, बैकटिक्स का नहीं। इसके अलावा, आपकी क्वेरी में ‘SET’ से पहले एक खाली जगह है, जो इस प्रकार है – “अद्यतन क्लिनिक_इन्वेंटरीसेट। आपका एसक्यूएल इस तरह दिखना चाहिए –

पीएचपी
$sql = "UPDATE clinic_inventory SET " .
       "Date_Received = '$Date_Received', " .
       "Number_Of_Items = '$Number_Of_Items', " .
       "Item = '$Item', " .
       "Expiration_Date = '$Expiration_Date', " .
       "Last_Updated = '$Last_Updated', " .
       "Quantity = '$Quantity' " .
       "WHERE id = $id";

आप स्वयं को SQL इंजेक्शन के लिए खुला छोड़ रहे हैं, आपको तैयार कथनों और पैरामीटरयुक्त प्रश्नों का उपयोग करना चाहिए – तैयार विवरण और संग्रहीत कार्यविधियाँ[^]

मोटे अनुमान के तौर पर आपका कोड इस तरह दिखना चाहिए –

पीएचपी
$sql = "UPDATE clinic_inventory SET " .
       "Date_Received = ?, " .
       "Number_Of_Items = ?, " .
       "Item = ?, " .
       "Expiration_Date = ?, " .
       "Last_Updated = ?, " .
       "Quantity = ? " .
       "WHERE id = ?";

$stmt = $connection->prepare($sql);

if ($stmt) {
    $stmt->bind_param("ssssssi", $Date_Received, $Number_Of_Items, $Item, $Expiration_Date, $Last_Updated, $Quantity, $id);

    $stmt->execute();

    if ($stmt->affected_rows > 0) {
        //Your query was successful...
        $successMessage = "Item Successfully Added";
        header("location: /inven/index.php");
        exit;
    } else {
        //Handle error/s...
        $errorMessage = "Error updating item: " . $stmt->error;
    }

    $stmt->close();
} else {
    //Handle error/s...
    $errorMessage = "Error preparing statement: " . $connection->error;
}

コメント

タイトルとURLをコピーしました