繁体   English   中英

使用PDO插入值

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM