Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO execute上的变量/数组也准备好了吗?_Php - Fatal编程技术网

Php PDO execute上的变量/数组也准备好了吗?

Php PDO execute上的变量/数组也准备好了吗?,php,Php,在下面的例子中,我会说$val1。val1美元也准备好了吗 $sql = "SELECT * FROM table WHERE col1=:var1 LIMIT 1"; $q = $conn->prepare($sql); $q->execute(array(':var1'=>$val1)); 是的,它与任何其他基于占位符的值一样都是“准备好的”(您这样说)。 否则,这种语法就没有意义了。没有。它没有“准备好”。它只会在实际执行时,在执行时被塞进查询中。所以我需要自己检

在下面的例子中,我会说$val1。val1美元也准备好了吗

 $sql = "SELECT * FROM table WHERE col1=:var1 LIMIT 1";
 $q = $conn->prepare($sql);
 $q->execute(array(':var1'=>$val1));
是的,它与任何其他基于占位符的值一样都是“准备好的”(您这样说)。

否则,这种语法就没有意义了。

没有。它没有“准备好”。它只会在实际执行时,在执行时被塞进查询中。所以我需要自己检查$val1的安全性,以避免sql注入?不。这就是为什么要使用预处理语句。DB库将为您解决任何注入问题。如果您正在执行
$sql=“SELECT…WHERE col1=$val1”
,则是的,您必须逃离自己。@MarcB您不必这样做,但您仍然应该这样做。如果不是为了防止二阶注入,为了基本数据验证和完整性。