簡體   English   中英

PHP PDO准備插入 - 不插入數據並且不顯示錯誤

[英]PHP PDO prepared insert - does not insert data and show no errors

這個問題讓我發瘋,我嘗試了一切。 是不是給我任何錯誤,但它也沒有向數據庫插入任何內容。 數據庫連接很好,應該沒有拼寫錯誤。 請看一下,看看你是否能找到問題:

$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!";
        }   
    }

}

此外,我確定它到達插入部分,因為我收到“成功”消息。

使用此代碼執行您的語句。 如果存在非致命錯誤,則會顯示該錯誤。

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

幾乎可以肯定,您的db用戶沒有權限執行您要求針對您嘗試執行的表的語句。

你在使用自動提交嗎? 如果不是,您可能需要將查詢包裝在事務中。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM