【问题标题】:secure insertion of form data containing arrays into mysql database将包含数组的表单数据安全插入到 mysql 数据库中
【发布时间】:2014-09-10 12:26:21
【问题描述】:

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

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

PHP 解析错误:语法错误,意外的 ';' in line ...(与insert语句相关的行)

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

【问题讨论】:

    标签: php mysql pdo sql-insert


    【解决方案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));
    

    【讨论】:

    • 感谢您的帮助,但我仍然收到相同的错误:(
    • Mona,我敢打赌,这段代码是可行的。您在其他任何地方都有错误。只需在执行后输入exit,看看值是否进入数据库。
    • soryy 我刚刚看到你写的关于不要将 PDO 与 mysql 混合的行。我正在阅读如何用 PDO 做这些行,然后我会再试一次并通知你,谢谢
    • 在 PDO 的情况下您不需要这样做。 bindparam 解决这个问题,但你正在绑定数组,所以你不需要担心它
    • 非常感谢,我刚刚看了一些与bindparam abd PDO相关的帖子,现在我明白了:),P.S,你赢了!它工作正常,问题之前缺少一个); :)
    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 2021-01-12
    • 1970-01-01
    • 2017-12-09
    • 2012-03-26
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多