PHP PDO插入操作失败

时间:2015-06-27 21:36:17

标签: php pdo

我是PDO的新手,我遇到了以下插入操作的问题。它总是在else的情况下结束(返回0)。

function insertInclusao($usuarioId, $tipoFaturaId, $parametrosValidadores, $identificadorExtra, $optin) {
    $pdoConnection = new PDO("mysql:host=host;dbname=dbname", "user", "pass");
    try {
        $stmte = $pdoConnection->prepare("INSERT INTO SF_INCLUSAO (UsuarioId, TipoFaturaId, ParametrosValidadores, DataInclusao, IdentificadorExtra, Optin) VALUES (?, ?, ?, NOW(), ?, ?)");
        $stmte->bindParam(1, $usuarioId , PDO::PARAM_INT);
        $stmte->bindParam(2, $tipoFaturaId , PDO::PARAM_INT);
        $stmte->bindParam(3, $parametrosValidadores , PDO::PARAM_STR);
        $stmte->bindParam(4, $identificadorExtra , PDO::PARAM_STR);
        $stmte->bindParam(5, $optin , PDO::PARAM_INT);
        $executarInclusao = $stmte->execute();
        if($executarInclusao) {
            return $pdoConnection->lastInsertId();
        } else {
            return 0;
        }
    } catch (PDOException $e) {
       return -1;
    }
}

当我使用mysql_query时,它曾经工作过:

 function insertInclusao($usuarioId, $tipoFaturaId, $parametrosValidadores, $identificadorExtra, $optin) {
    $db_connection = mysql_connect( "host", "user", "pass" ) or die( mysql_error() );
    mysql_select_db( "database" ) or die( mysql_error() );
    $insert_query = "INSERT INTO SF_INCLUSAO (UsuarioId, TipoFaturaId, ParametrosValidadores, DataInclusao, IdentificadorExtra, Optin) VALUES ('".$usuarioId."', '".$tipoFaturaId."', '".$parametrosValidadores."', NOW(), '".$identificadorExtra."', '".$optin."');";
    $query_return = mysql_query($insert_query);
    $new_id = mysql_insert_id();
    if($query_return) {
        return $new_id; // OK
    }
    else {
        return 0;
    }
}

现在我没有看到可能出错的地方。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您需要设置此

function findLongest(str){
    var array = str.split(" ");
    var longest = "";
    for (var i=0; i<array.length; i++){
        if (array[i].length > longest.length){
            longest = array[i];
        }
    }
    console.log(longest);
}
findLongest("The quick brown fox jumped over the lazy dog");

现在您将收到错误,因为您已将PDO错误模式设置为异常。

$pdoConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdoConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

答案 1 :(得分:1)

使用此

$pdoConnection = new PDO("mysql:host=host;dbname=dbname", "user", "pass",array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

然后你可以改变这个:

if($executarInclusao) {
    return $pdoConnection->lastInsertId();
} else {
    return 0;
}

为此:

return $pdoConnection->lastInsertId();

因为如果查询出错,$stmte->execute()抛出PDOException