使用PDO和INSERT(PHP)
我有使用PDO和INSERT(PHP),php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我有 $sql = $db->prepare("INSERT INTO `aliases` (`alias`, `domain`, `added`, `enabled`) VALUES (:alias, :domain, :added, :enabled)"); $sql->bindValue(':alias', $alias); $sql->bindValue(':domain', $domain); $sql->bindValue(':added', time());
$sql = $db->prepare("INSERT INTO `aliases` (`alias`, `domain`, `added`, `enabled`) VALUES (:alias, :domain, :added, :enabled)");
$sql->bindValue(':alias', $alias);
$sql->bindValue(':domain', $domain);
$sql->bindValue(':added', time());
$sql->bindValue(':enabled', 1);
$sql->execute();
//how do I test if it was added or #1062 - Duplicate entry '...' for key 'alias'
我想那是对的
我的问题是:
如何测试它是否已成功添加?您可以检查
$sql->execute()
的返回值,如下所示:
if ($sql->execute()) {
// Query succeeded.
} else {
// Query failed.
$errorcode = $sql->errorCode();
}
有关更多信息,请参阅(已准备语句的类)。您可以检查
$sql->execute()
的返回值,如下所示:
if ($sql->execute()) {
// Query succeeded.
} else {
// Query failed.
$errorcode = $sql->errorCode();
}
有关更多信息,请参阅(已准备语句的类别)。请参阅关于和此的文档
默认情况下,您必须检查execute的返回。详细信息可在和中找到
但我建议使用PDO::ERRMODE_异常,以便在出现错误时抛出。这使您的代码更加整洁。基本信息由异常提供,但可以找到更多信息(使用异常的正常方法,请参阅上面的文档链接)
请参阅关于和此的文档
默认情况下,您必须检查execute的返回。详细信息可在和中找到
但我建议使用PDO::ERRMODE_异常,以便在出现错误时抛出。这使您的代码更加整洁。基本信息由异常提供,但可以找到更多信息(使用异常的正常方法,请参阅上面的文档链接)
您缺少要为其分配值的行:alias、:domain、:added和:enabledOh我忘了复制它们。我现在添加它们检查$sql->errorCode()是否有效?您缺少要为其赋值的行:alias、:domain、:added和:enabledOh我忘记复制它们了。我现在添加它们检查$sql->errorCode()是否有效?
$db = new PDO( /* your connection string */ );
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sql = $db->prepare("INSERT INTO `aliases` (`alias`, `domain`, `added`, `enabled`) VALUES (:alias, :domain, :added, :enabled)");
$sql->execute();
}
catch(PDOException $e) {
echo $e; //basic information is provided due to Exception::__toString()
die();
}
if ($stmt->errorCode() == "00000") {
// Query succeeded.
} else {
// Query failed.
echo "Error: " . $stmt->errorCode();
}