Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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
PDO:使用PHP常量准备语句_Php_Mysql_Pdo - Fatal编程技术网

PDO:使用PHP常量准备语句

PDO:使用PHP常量准备语句,php,mysql,pdo,Php,Mysql,Pdo,我有一个SQL查询,它有许多不同的参数。通常,在PDO语句中,is只需执行以下操作: $sql = '... :parameter ...'; $query = $db->prepare($sql); $query->bindParam(':parameter', $var, $type); 然而,我碰巧有大量的参数,所有这些都是PHP常量(因此没有用户输入) 这里有两种方法: 为我们希望绑定的每个参数声明一个变量,并传递它(如上所述) 拆分SQL查询,以便得到如下结果: $sql

我有一个SQL查询,它有许多不同的参数。通常,在PDO语句中,is只需执行以下操作:

$sql = '... :parameter ...';
$query = $db->prepare($sql);
$query->bindParam(':parameter', $var, $type);
然而,我碰巧有大量的参数,所有这些都是PHP常量(因此没有用户输入)

这里有两种方法:

  • 为我们希望绑定的每个参数声明一个变量,并传递它(如上所述)
  • 拆分SQL查询,以便得到如下结果:
  • $sql='…'。常数“…”

    1的缺点是有很多额外的代码,这些代码几乎没有什么实际用途,尽管很清楚发生了什么

    2的缺点是,SQL代码上的语法高亮显示丢失了,看起来很奇怪,尽管它更短、更简洁

    有没有办法将这些常量按原样传递给
    bindParam()

    因此:


    不使用
    bindParam()
    ,而是使用
    bindValue()
    :请注意,bindParam()参数是通过引用传递给PDO的,而bindValue()参数是通过值传递的。我将创建一个映射方法,可能还有一个生成查询方法,在execute()中将参数作为数组传递。请参阅
    $query->bindParam(':parameter', CONST, $type);