PHP PDO准备插入-不插入数据并且不显示错误[重复]

Posted

技术标签:

【中文标题】PHP PDO准备插入-不插入数据并且不显示错误[重复]【英文标题】:PHP PDO prepared insert - does not insert data and show no errors [duplicate] 【发布时间】: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!";
           
    


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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于PHP PDO准备插入-不插入数据并且不显示错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用php pdo在sqlite数据库中插入多个复选框的值

如何使用 PDO 从 php 文件中插入数据?

没有抛出错误,但数据没有插入数据库(PHP PDO)[重复]

PHP MySql PDO 多次插入不起作用

更新选择列表而不刷新 [PDO/PHP/AJAX]

无法使用 php 的 PDO 将数据插入数据库