gpt4 book ai didi

php - 如果在 PDO 准备语句中插入成功,则 if/else 语句的语法

转载 作者:行者123 更新时间:2023-12-02 01:14:02 26 4
gpt4 key购买 nike

我正在尝试从 mySql 语句切换到 PDO 准备语句,但我无法确定插入成功时我必须使用的 if/else 语句的正确语法(以前是 if($result) {...}).

我知道 $stmt->execute();成功时返回 true 或失败时返回 false,但我无法确定如何设置语句来对此采取行动。

新代码(PDO准备语句)

$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") 函数的其余部分

$result = @mysql_query($qry);    
if($result) {
$qry="SELECT * FROM customer_info WHERE user_name='$_POST['user_name']' AND password='$_POST['password']'";
$result=mysql_query($qry);
if($result) {
if(mysql_num_rows($result) == 1) {
//user_name Successful
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_USER_ID'] = $member['user_id'];
session_write_close();
header("location: flatter_iframe.html");
exit();
}else {
header("location: login_failed.html");
exit();
}

我删除了大部分变量以简化操作(因为代码相同)

最佳答案

有多种方法可以检查 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

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

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

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

PDO lastInsertId documentation here

关于php - 如果在 PDO 准备语句中插入成功,则 if/else 语句的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13833499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com