将包含数组的表单数据安全插入到mysql数据库中

时间:2014-09-10 12:26:22

标签: php mysql pdo sql-insert

我找到了许多关于如何使用PDO将表单数据插入到mysql中的答案,我也发现了一些与插入来自this one数组的数据相关的答案,但实际上我的问题与我表单中的第三个问题有关。我不确定我是否以正确的方式编写了查询

这是我的代码,但它给了我这个错误:

  

PHP Parse错误:语法错误,意外&#39 ;;' in ...行(与插入语句相关的行)

<?php
session_start();

if(isset($_POST['submit']))
{
 $_SESSION['q1'] = $_POST['q1'];
 $_SESSION['q2'] = $_POST['q2'];
 $_SESSION['q3'] = implode(',', $_POST['genre']);

 $q1 = mysql_real_escape_string($_SESSION['q1']);
 $q2 = mysql_real_escape_string($_SESSION['q2']);
 $q3 = mysql_real_escape_string($_SESSION['q3']);

 $conn = new PDO('mysql:dbname=Application;host=localhost;charset=utf8', 'user', 'xxxx');
 $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $stmt = $conn->prepare('INSERT INTO test (q1, q2, q3) VALUES (:q1, :q2, :q3)');
 $stmt->execute(array(':q1' => $q1,':q2' => $q2,':q3' => ".$q3."));
 }

 catch(Exception $e) {
     echo 'Exception -> ';
     var_dump($e->getMessage());
  }

 header('Location: Thankyou.php');
   exit;
}
?>

1 个答案:

答案 0 :(得分:1)

首先不要将mysql与PDO混合使用,也可以使用try with catch exception和

更改

$stmt->execute(array(':q1' => $q1,':q2' => $q2,':q3' => ".$q3."));

$stmt->execute(array(':q1' => $q1,':q2' => $q2,':q3' => $q3));
相关问题