PDO mysql: insert başarılı olup olmadığını nasıl öğrenebilirim

4 Cevap php

Ben bir kayıt (MySQL ve PHP) eklemek için PDO kullanarak ediyorum

$stmt->bindParam(':field1', $field1, PDO::PARAM_STR);
$stmt->bindParam(':field2', $field2, PDO::PARAM_STR);
$stmt->execute();

Örneğin, başarıyla takılı eğer bir yinelenen çünkü rekor takılı değilse bilmek için bir yol var mı?

Düzenleme: tabii ben veritabanına bakabilirsiniz, ama ben programlı geri demek.

4 Cevap

Başarı execute , which is TRUE dönüş değerine bakarak deneyin, ve FALSE başarısızlık üzerinde.

Sen diğerleri gibi başarıyla yürütülen denildi olup olmadığını kontrol etmelisiniz. Ayrıca PDOStatement::rowCount(), bir sorgu tarafından etkilenen satırların sayısını almak için kullanabilirsiniz:

PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.

If the last SQL statement executed by the associated PDOStatement was a SELECT statement, some databases may return the number of rows returned by that statement. However, this behaviour is not guaranteed for all databases and should not be relied on for portable applications.

http://www.php.net/manual/en/pdostatement.rowcount.php

Güncelleştirme sorgusu geçerli veritabanı rekor daha sonra $ deyim-> rowCount eşleşen değerleri ile yürütür Etkilenen satır için () 0 döndürür. Eğer başarı için test etmek için bir if (rowCount () == 1) varsa başarısız değil zaman başarısız güncelleştirildi ancak değerleri veritabanında zaten vardı bu yüzden hiçbir değişiklik düşünüyorum.

$stmt->execute(); if( $stmt ) return "success";

Ben ihlal edilmiş benzersiz bir anahtar alanı olan bir kaydı güncelleştirmek için çalıştım, bu benim için işe yaramadı. Sorgu başarısı döndü ama başka bir sorgu eski bir alan değerini döndürür.