Php 将验证添加到PDO中

Php 将验证添加到PDO中,php,forms,pdo,Php,Forms,Pdo,这是我想要的工作方式,但是我可以对它做些什么更新来使它更好 代码:---------------------------------------- $odb = new PDO('mysql:host=localhost;dbname=db371885849', $user, $pass); $odb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if(isset($_POST['firstn

这是我想要的工作方式,但是我可以对它做些什么更新来使它更好

代码:----------------------------------------

  $odb = new PDO('mysql:host=localhost;dbname=db371885849', $user, $pass);
  $odb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


        if(isset($_POST['firstname'])) {
                $firstname = $_POST['firstname'];
                $lastname = $_POST['lastname'];
                $email = $_POST['email'];

                        $q = "INSERT INTO jobform(firstname, lastname, email) VALUES (:firstname, :lastname, :email);";
                        $query = $odb->prepare($q);
                        $results = $query->execute(array(
                        ":firstname" => $firstname,
                        ":lastname" => $lastname,
                        ":email" => $email
                ));
                }
++++++++++++++++++++++++更新工作++++++++++++++++++++++++++

 $odb = new PDO('mysql:host=localhost;dbname=db371885849', $user, $pass);
  $odb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        if(isset($_POST['firstname'])) {
                $firstname = $_POST['firstname'];
                $lastname = $_POST['lastname'];
                $email = $_POST['email'];
 if (!empty($firstname))
{

                        $q = "INSERT INTO jobform(firstname, lastname, email) VALUES (:firstname, :lastname, :email);";
                        $query = $odb->prepare($q);
                        $results = $query->execute(array(
                        ":firstname" => $firstname,
                        ":lastname" => $lastname,
                        ":email" => $email
                ));
                } else {
            echo "not today";
        }
                }

PDO用于与数据库通信,而不是验证值(除了引用值以进行安全插入)。在使用PDO启动SQL查询之前,您必须执行验证:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (
        // your empty() checks
    ) {
        // your query
    }
}

PDO用于与数据库通信,而不是验证值(除了为安全插入引用值)。在使用PDO启动SQL查询之前,您必须执行验证:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (
        // your empty() checks
    ) {
        // your query
    }
}

看起来您根本不需要验证。
那么,我是如何做到的,基于TagWiki的代码

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $allowed = array('firstname', 'lastname', 'email');
    $sql = "INSERT INTO jobform SET ".pdoSet($fields,$values);
    $stm = $dbh->prepare($sql);
    $stm->execute($values);
    header("Location: ".$_SERVER['PHP_SELF']);
    exit;
}

看起来您根本不需要验证。
那么,我是如何做到的,基于TagWiki的代码

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $allowed = array('firstname', 'lastname', 'email');
    $sql = "INSERT INTO jobform SET ".pdoSet($fields,$values);
    $stm = $dbh->prepare($sql);
    $stm->execute($values);
    header("Location: ".$_SERVER['PHP_SELF']);
    exit;
}


尝试使用
empty(trim($\u POST…
为什么您认为它与PDO有关?重复使用
empty(trim($_POST…
为什么你认为它与PDO有关?为什么-1的重复?解释一下你自己。我正要问我同样的问题o_o+1。如果我没有弄错的话,
firstname
这个词在这个小片段中出现了7次。你不觉得有点太多吗?这是个问题吗?你也可以调用var$pig,但我不这么认为e编码练习的问题Surley’重复一个变量不是一种很好的做事方式?我没有什么特别的问题,只是在我进行的过程中试着教自己正确的做事方式就行了。谢谢你提供的信息,我现在就试试!为什么-1?自我解释一下我正要问我同样的问题o_o+1。如果我没有弄错的话,
firstname
这个词在这个小片段中出现了7次。你不觉得它有点太多了吗?这是个问题吗?你也可以调用var$pig,但我看不到编码实践的问题。重复变量不是一个很好的方法吗?我没有特别的问题,只是尝试一下在我进行的过程中教会我自己正确的做事方法就是一切。谢谢你提供的信息,我现在就来试试!好的,所以这段代码应该在查询连接之前设置,设置变量的验证?你可以早点连接,连接不是问题。我想说的是,你应该手动验证你的字段一旦你完全确定它们都是有效的,你就可以继续启动<代码> INSERT /COD>查询。为了使事情变得更容易,你也可以考虑使用一些PHP框架,或者至少是它的验证器组件。ZEnter框架有一套体面的和相当完整的验证器集,你可以使用它。在查询连接之前设置,设置变量的验证?您可以更早地连接,连接不是问题。我想说的是,您应该手动验证您的字段,一旦您完全确定它们都有效,您可以继续启动
插入
查询。为了使事情更简单,您还可以考虑der使用一些PHP框架,或者至少是其中的验证器组件。Zend framework有一套像样的、相当完整的验证器,您可以独立使用。感谢您的帮助,pdoSet对我来说是新的,我看看是否可以将其开发到我的脚本中,再次感谢。感谢您的帮助,pdoSet对我来说是新的,我看看是否可以将其开发到我的脚本中脚本,再次感谢。