क्लासिक लेन-देन:)पीएचपी एक पाश में बयान और लेन-देन के लिए तैयार एक पाश कोड में
1 ये हैं:
$mysqli->query("START TRANSACTION");
foreach ($pdata as $key => $value) {
$sql = "INSERT INTO temp (`fund_id`) VALUES (" . $value . ")";
$result = $mysqli->query($sql);
}
$mysqli->query("COMMIT");
फिर हम तैयार बयान करने के लिए बदलने के लिए:
$mysqli->autocommit(FALSE);
foreach ($pdata as $key => $value) {
$sql = "INSERT INTO temp (`fund_id`) VALUES (?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('i', $value);
$stmt->execute();
}
$mysqli->commit();
प्रश्न दो कोड समान हैं? क्या मुझे तैयार कथन के साथ दूसरे कोड में कुछ याद आ रहा है?
2) $mysqli->commit()
$mysqli->query("COMMIT")
जैसा ही है?
3) क्या मुझे तैयार बयान ब्लॉक के लिए $mysqli->query("START TRANSACTION");
जोड़ने की आवश्यकता है या जब हम autocommit(FALSE)
सेट करते हैं तो लेनदेन स्वचालित रूप से प्रारंभ हो जाएगा?
ऑटोकॉमिट बंद करने के बाद आपको 'ट्रांज़ेक्शन शुरू करने' की आवश्यकता नहीं है। आप 'mysqli-> तैयार कर सकते हैं()' _before_ अपना लूप, फिर इसे 'foreach' लूप के अंदर निष्पादित करें)। प्रत्येक लूप पुनरावृत्ति पर 'तैयार() 'की आवश्यकता नहीं है। –
आपको हर बार 'bind_param() 'की आवश्यकता नहीं है। यह चर के संदर्भ को बांधता है, इसलिए प्रत्येक बार जब आप इसे निष्पादित करते हैं तो वेरिएबल के वर्तमान मान का उपयोग करेंगे। – Barmar