我正在尝试从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")
我删除了大部分变量以简化事情(因为代码是相同的)
答案 0 :(得分:4)
有很多方法可以检查INSERT是否正常工作。
如你所说,$stmt->execute();
成功时返回true,失败时返回false。所以你可以使用:
$result = $stmt->execute();
if ($result) {...}
PDO Execute documentation here
rowCount将返回查询所包含的行数。成功插入后,应为1。
$stmt->execute();
$affected_rows = $stmt->rowCount();
if ($affected_rows == 1) {...}
PDO rowCount documentation here
如果您的表具有ID列,则可以使用lastInsertId()
返回上一个插入行的ID。
$stmt->execute();
$newCustomerInfoId = $pdo->lastInsertId();
if ($newCustomerInfoId) {...}
注意:您必须在PDO对象上调用lastInsertId
,而不是$stmt
。