我是PHP新手,但沒有編程。來自ASP [經典]背景。簡而言之,我使用PHP 5.4,在IIS7和SQL Server 2005 Express上使用FastCGI。我瞭解了基礎知識,並花了相當長的時間來研究安全性。如果使用存儲過程,則需要PHP PDO PARAMS?
我正在處理GET和POST輸入數據。我的數據庫連接字符串位於Web根目錄之外的單獨文件中。我正在使用PDO準備的語句[儘管我聽說查詢+報價執行速度更快]與命名的佔位符以及數據庫存儲過程。我試圖理解爲什麼我需要在bindParam函數中使用額外的參數,特別是數據類型選項「PDO :: PARAM_STR,12」[該例中的第二個參數表示數據長度正確嗎?]。
在bindParam中指定數據類型和長度有什麼好處?如果我正在使用已經指定了數據類型和長度的存儲過程,是否需要它?另外,我相信我需要使用類似「PDO :: PARAM_INPUT_OUTPUT」的方法來返回存儲過程中的值。
謝謝!
**編輯**
由於某些原因,如果我使用PDO :: PARAM_STR參數,我的存儲過程似乎不會將數據寫入數據庫。所以我省略了這個論點。這裏是我的代碼:
$sql1 = $conn->prepare("EXEC insert_platts :userAgent, :userIp, 1, :source");
$sql1->bindParam(':userAgent', $userAgent);
$sql1->bindParam(':userIp', $userIp);
$sql1->bindParam(':source', $source);
$sql1->execute();
此外,而不是,我使用lastInsertId(),而不是從存儲過程返回的標識值:不,不需要
$lastRow = $conn->lastInsertId();
print $lastRow;
Hello ..請問有沒有人有關於此的任何信息?我還注意到,通過使用PDO,可以將[撇號]保存爲這是保存特殊字符到數據庫的正確方法嗎?在我的ASP日子裏,我只是加倍努力' - ' - 謝謝 – user1488064