Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO准备插入-不插入数据且不显示错误_Php_Mysql_Insert_Pdo - Fatal编程技术网

PHP PDO准备插入-不插入数据且不显示错误

PHP PDO准备插入-不插入数据且不显示错误,php,mysql,insert,pdo,Php,Mysql,Insert,Pdo,这个问题快把我逼疯了,我什么都试过了。Is不会给我任何错误,但也不会向数据库插入任何内容。数据库连接良好,应该没有输入错误。请看一看,看看是否能找到问题: $err = array(); if (isset($_POST['submit'])) { $ip = gethostbyname($_SERVER['REMOTE_ADDR']); $date = "2012-02-02 02:02:02"; //Example $uploader_name = $_POST[

这个问题快把我逼疯了,我什么都试过了。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!";
        }   
    }

}

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

使用此代码执行您的语句。如果存在非致命错误,它将显示该错误

$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());
}

谢谢!!问题是有些值是空的。但这只是“必需”的一些字段,如何向这些字段插入空白值?您必须为添加到准备好的语句中的每个输入提供验证代码。如果($myVar===nulll){$myVar=''';}或者什么的。2年后你会发现