[英]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.