Синтаксис для инструкции if / else, если вставка была успешной в подготовленном заявлении PDO

Я пытаюсь переключиться с инструкций 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(); } 

Я удалил большинство переменных, чтобы упростить ситуацию (так как код тот же)

Related of "Синтаксис для инструкции if / else, если вставка была успешной в подготовленном заявлении PDO"

Существует несколько способов проверки правильности работы INSERT.

1. Возвращаемое значение из $ stmt-> execute ()

Как вы сказали, $stmt->execute(); возвращает true при успешном завершении или false при ошибке. Таким образом, вы можете использовать:

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

PDO Выполнить документацию здесь

2. Количество строк

rowCount вернет число строк, связанных с запросом. После успешной вставки это должно быть 1.

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

Документация PDO rowCount здесь

3. Последний введенный идентификатор

Если в таблице есть столбец идентификатора, вы можете вернуть идентификатор последней вставленной строки, используя lastInsertId() .

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

Примечание. Вы должны вызвать lastInsertId для объекта PDO, а не $stmt .

Документация PDO lastInsertId здесь