यह सिंगल कोट्स के साथ तभी मदद करता है जब आप पैरामीट्रिज्ड तैयार स्टेटमेंट करते हैं, अन्यथा आप जो कुछ भी कर रहे हैं वह स्ट्रिंग कॉन्सटेनेशन है और आपके एसक्यूएल को ठीक से बनाने के अधीन होना चाहिए।
कुछ इस तरह का प्रयास करें:
$sql = "INSERT INTO anagrafiche SET
id_ndg = :protocol,
nick = :nick,
nome = :nome,
...
";
$params = array(
':protocol' => $protocol,
':nick' => $nick,
':nome' => $nome,
...
);
try{
$s = $pdo->prepare($sql);
$s->execute($params);
} catch (PDOException $e) {
...
}
यह आपको SQL इंजेक्शन हमलों को कम करने का अतिरिक्त लाभ भी देता है।
यदि आप एक कदम आगे जाना चाहते हैं और डेटा प्रकारों को लागू करना चाहते हैं, तो आप bindValue()
. का उपयोग कर सकते हैं या bindParam()
जैसे:
$sql = "INSERT INTO anagrafiche SET
id_ndg = :protocol,
nick = :nick,
nome = :nome,
...
";
try{
$s = $pdo->prepare($sql);
$s->bindParam(':protocol', $protocol, PDO::PARAM_ST);
$s->bindParam(':nick', $nick, PDO::PARAM_ST);
$s->bindParam(':nome', $nome, PDO::PARAM_ST);
...
$s->bindParam(':some_integer', $some_integer, PDO::PARAM_INT);
...
$s->execute();
} catch (PDOException $e) {
...
}
bindValue()
bindParam()
. के समान सिंटैक्स है लेकिन केवल कथन निष्पादन के समय चर के मान के बजाय पैरामीटर के लिए बाध्य होने के समय चर के मान को बांधता है।