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


secure insertion of form data containing arrays into mysql database

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

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

PHP分析错误:语法错误,意外的";"排队。。。(与插入语句相关的行)

<?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;
}
?>

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

更改

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

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