如果在PDO预处理语句中插入成功,则为if / else语句的语法

时间:2012-12-12 05:40:28

标签: php if-statement pdo insert prepared-statement

我正在尝试从mySql语句切换到PDO预处理语句,但是我在查找插入成功时必须使用的if / else语句的正确语法时遇到了问题(以前是{{ 1}})。

我知道$ stmt-> execute();成功时返回true,失败时返回false,但我无法确定如何设置语句以对其执行操作。

新代码(PDO准备好的声明)

if($result) {...}

这是原始$gender = $_POST['gender']; if ($gender==="female" ) { try { $stmt = $conn->prepare('INSERT INTO customer_info (fname...) VALUES(:fname...)'); $stmt->bindParam(':fname', $_POST['fname'], PDO::PARAM_STR); $stmt->execute(); } catch(PDOException $e) { echo $e->getMessage(); } 功能的其余部分

if ($gender==="female")

我删除了大部分变量以简化事情(因为代码是相同的)

1 个答案:

答案 0 :(得分:4)

有很多方法可以检查INSERT是否正常工作。

1。从$ stmt-> execute()

返回值

如你所说,$stmt->execute();成功时返回true,失败时返回false。所以你可以使用:

$result = $stmt->execute();
if ($result) {...}

PDO Execute documentation here

2。行数

rowCount将返回查询所包含的行数。成功插入后,应为1。

$stmt->execute();
$affected_rows = $stmt->rowCount();
if ($affected_rows == 1) {...} 

PDO rowCount documentation here

3。上次插入的标识

如果您的表具有ID列,则可以使用lastInsertId()返回上一个插入行的ID。

$stmt->execute();
$newCustomerInfoId = $pdo->lastInsertId();
if ($newCustomerInfoId) {...}

注意:您必须在PDO对象上调用lastInsertId,而不是$stmt

PDO lastInsertId documentation here