PDO从数组中准备语句和bindValues

时间:2014-03-27 18:51:39

标签: php pdo

我在PDO语句中有以下代码块:

$stmt = $db->prepare("INSERT INTO first_page_data (title, first_name, surname, phone, email, add1, add2, add3, add4, add5) VALUES(?,?,?,?,?,?,?,?,?,?)");

$stmt->bindValue(1, $_POST['title'], PDO::PARAM_STR);
$stmt->bindValue(2, $_POST['first_name'], PDO::PARAM_STR);
$stmt->bindValue(3, $_POST['surname'], PDO::PARAM_STR);
$stmt->bindValue(4, $_POST['phone'], PDO::PARAM_INT);
$stmt->bindValue(5, $_POST['email'], PDO::PARAM_STR);
$stmt->bindValue(6, $_POST['add1'], PDO::PARAM_STR);
$stmt->bindValue(7, $_POST['add2'], PDO::PARAM_STR);
$stmt->bindValue(8, $_POST['add3'], PDO::PARAM_STR);
$stmt->bindValue(9, $_POST['add4'], PDO::PARAM_STR);
$stmt->bindValue(10, $_POST['add5'], PDO::PARAM_STR);
$stmt->execute();
$_SESSION['buyer_email'] = $_POST['email'];

可以使用数组和bindValues循环将这些参数(title,first_name等)放入for each吗?我可以通过只包含一个包含标题的数组来获取prepare语句,但似乎无法在$ _POST值中获取变量名。它会节省很多代码,但我不能完全实现!

以下是我想在绑定值循环中使用的预准备语句中使用的数组:

$first = array('title','first_name','surname','phone','email','add1','add2','add3','add4','add5');

2 个答案:

答案 0 :(得分:2)

只需循环遍历$first并为每个人致电bindValue

foreach($first as $key=>$val){
    $stmt->bindValue($key+1, $_POST[$val], PDO::PARAM_STR);
}

答案 1 :(得分:-1)

或者您可以像这样使用它:

$stmt = $db->prepare("INSERT INTO first_page_data (title, first_name, surname, phone, email, add1, add2, add3, add4, add5) VALUES(?,?,?,?,?,?,?,?,?,?)");

$stmt->execute($array);

数组就像:

$array = array($_POST['title'],$_POST['first_name']);

或者如果您已经有正确的订单

  $array = $_POST;