【问题标题】:PHP PDO prepared insert - does not insert data and show no errors [duplicate]PHP PDO准备插入-不插入数据并且不显示错误[重复]
【发布时间】:2012-04-24 06:19:23
【问题描述】:

这个问题让我发疯,我尝试了一切。 Is 没有给我任何错误,但它也没有向数据库插入任何内容。数据库连接良好,应该没有错别字。请看一下,看看是否能找到问题:

$err = array();

if (isset($_POST['submit'])) {

    $ip = gethostbyname($_SERVER['REMOTE_ADDR']);
    $date = "2012-02-02 02:02:02"; //Example
    $uploader_name = $_POST['uploader_name'];

    // Validation happens here...


    if (empty($err)) {

        $host = "host";
        $dbname = "db";
        $user = "user";
        $pass = "pass";

        try {
            $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);  

            $sql = "INSERT INTO `table` (`ip`, `date`, `uploader_name`) 
                    VALUES (:ip, :date, :uploader_name)";
            $stmt = $dbh->prepare($sql);

            # the data we want to insert  
            $params = array(
                ':ip' => $ip,
                ':date' => $date,
                ':uploader_name' => $uploader_name
            );


            $stmt->execute($params);

            $dbh = null;

        } catch(PDOException $pe) {
            die('SQL Error');
        }


        if (empty($err)) {
            $err[] = "Success!";
        }   
    }

}

另外,我确定它到达了插入部分,因为我收到了“成功”消息。

【问题讨论】:

    标签: php mysql insert pdo


    【解决方案1】:

    使用此代码执行您的语句。如果有非致命错误,就会显示出来。

    $stmt->execute($params) or die(print_r($stmt->errorInfo(), true));
    

    几乎可以肯定,您的 db 用户没有权限对您尝试执行的表执行您要求的语句。

    【讨论】:

    • 谢谢!!问题是一些值是NULL。但它只是“必填”的一些字段,我如何在这些字段中插入空白值?
    • 您必须为要添加到准备好的语句中的每个输入提供验证代码。 if ($myVar === nulll) { $myVar = '';} 什么的。
    • 2 年后你是炸弹
    【解决方案2】:

    您是否使用自动提交?如果不是,您可能需要将查询包装在事务中。

    try
    {
        $dbh->beginTransaction();
        // your code.
        $dbh->commit();
    }
    catch(PDOException $pe)
    {
        $dbh->rollback();
        die($pe->getMessage());
    }
    

    http://php.net/manual/en/pdo.transactions.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2013-02-25
      • 2016-11-29
      • 2015-04-17
      • 1970-01-01
      • 2015-10-28
      相关资源
      最近更新 更多