php - 如何确定表单数据何时已成功输入数据库?

标签 php html mysql pdo

首先是我的代码:

<?php 
//establish connection to the database
require("database.php");
try{
  // prepare and bind
$stmt = $conn->prepare("INSERT INTO clients (phonenumber, firstname) VALUES (:phonenumber, :firstname)");
$stmt->bindParam(':phonenumber', $phonenumber, PDO::PARAM_STR);
$stmt->bindParam(':firstname', $firstname, PDO::PARAM_STR);

 // set parameters and execute
if(isset($_POST['phonenumber'])){ $phonenumber = $_POST['phonenumber']; }
if(isset($_POST['firstname'])){ $firstname = $_POST['firstname']; }
$stmt->execute();

}catch (Exception $e) {
        echo "Could not insert data into the database $e";
        exit;
        }
//my attempt on checking if the data has been successfully entered in the database
        $inserted = true;
?>

<h2>The Form</h2>
<hr />
<br />
<form action="" method="post">
Number: <input type="text" name="phonenumber" value="" />
<br /><br />
First Name: <input type="text" name="firstname" value="" />
<br /><br />
<input type="submit" name="submit" value="Submit">
</form>
<br />
<hr />

</body>
</html>

然后我尝试检查表单数据是否已成功输入,如下所示:

<?php 
if($inserted = true){ 
echo "THE DATA HAS BEEN SUCCESSFULLY ENTERED IN THE DATABASE"; 
}
?>

现在如您所见,我正在尝试在输入数据时将名为 $inserted 的变量设置为 true,以便我可以确定数据是否已成功输入。但由于某种原因,它不工作。它一直给我一个错误,说 $inserted 是未定义的,所以我用 isset() 包装它,即使这样消除了错误,但它没有检查是否$inserted 已设置。换句话说,即使由于某种原因没有成功输入,我总是不断收到回显消息。

非常感谢您的帮助,非常感谢。

最佳答案

您可以使用 ->lastInsertId 方法来检查最后一次插入是否成功,而不是使用标志。

<?php 

if(isset($_POST['firstname'], $_POST['phonenumber'])) {
    require('database.php');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $phonenumber = $_POST['phonenumber'];
    $firstname = $_POST['firstname'];

    try{
        $stmt = $conn->prepare("INSERT INTO clients (phonenumber, firstname) VALUES (:phonenumber, :firstname)");
        $stmt->bindParam(':phonenumber', $phonenumber, PDO::PARAM_STR);
        $stmt->bindParam(':firstname', $firstname, PDO::PARAM_STR);
        $stmt->execute();
    }
    catch (Exception $e) {
        echo "Could not insert data into the database $e";
        echo $e->getMessage();
        exit;
    }

    if($conn->lastInsertId() > 0) {
        echo 'insertion was made';
    }

}
?>

<h2>The Form</h2>
<hr />
<br />
<form action="" method="post">
Number: <input type="text" name="phonenumber" value="" />
<br /><br />
First Name: <input type="text" name="firstname" value="" />
<br /><br />
<input type="submit" name="submit" value="Submit">
</form>
<br />
<hr />

</body>
</html>

旁注:您也可以使用 ->rowCount():

if($conn->rowCount() > 0) {
    // do your thing
}

关于php - 如何确定表单数据何时已成功输入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29315888/

相关文章:

php - Symfony2 : Very Slow Session Handling

php - 循环日期函数php

asp.net - 如何删除所有父容器对任何子控件的影响

php - 始终获得正确的日期时间?

php - 在刷新到 mysql 之前如何处理 memcache 中的大页面印象

html - Chrome 浏览器不显示 UTF-8 字符

python - celery 任务和 django 查询集缓存

php - 如果我通过将搜索字段保留为空白来点击搜索按钮,并且需要额外的一个 HTML 按钮来显示所有条目,为什么要显示 mysql 数据库中的所有数据呢?

php - CSS/PHP/MySQL - 将结果显示为 3 列

javascript - 从 React 到 PHP 文件的 Ajax 调用