[英]Inserting values using PDO
•因此,我試圖改變我的編碼習慣,並希望至少防止SQL注入。 但是,我仍然對創建查詢中的參數或語法感到困惑。 例如,
$q = //LINE 1 "insert into tblProject(projectName, projectLocation, projectType, projectStatus) //LINE 2 values(:projectName, :projectLocation, :projectType, :projectStatus);";
我相信第一行是指數據庫中的列名,但是在LINE 2
,“:”是什么意思,它是做什么的呢? values()
內的values()
在哪里引用呢?聲明,例如$projectName = $_POST['projectName'];
它引用$ projectName還是$_POST['projectName']
內部的值?
•另一個問題是關於...->execute(array(...));
讓我們以以下代碼為例:
$results = $query->execute(array(
":projectName" => $projectName,
":projectLocation" => $projectLocation,
":projectType" => $projectType,
":projectStatus" => $projectStatus
));
您能簡要但准確地解釋它的作用嗎? 而且, :projectName
等等在哪里。.從哪里來的?
•它使用array()。 因此,如果我僅更新或插入單個值並使用execute(array())
,是否會導致任何錯誤?
我相信我問了太多問題,有什么好的參考資料可以在這里找到大部分答案嗎?
提前致謝。
您的問題的兩個部分是相同的。 帶冒號的名稱是您指定綁定名稱的方式。 當您使用bindValue / bindParam或執行時,您說“ this:parameter實際上是此值”。 因此,它將接受您的查詢:
$q = "insert into tblProject(projectName, projectLocation, projectType, projectStatus)
values(:projectName, :projectLocation, :projectType, :projectStatus);";
然后,當您執行此操作時:
$results = $query->execute(array(
":projectName" => $projectName,
":projectLocation" => $projectLocation,
":projectType" => $projectType,
":projectStatus" => $projectStatus
));
驅動程序將經過說:“好吧,因此需要對$ projectName的值進行轉義並代替查詢中的:projectName使用,而$ projectLocation應該為:projectLocation ...”,依此類推,依此類推
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.