【问题标题】:PDO : What´s the best method to get the result after insert data to databasePDO:将数据插入数据库后获得结果的最佳方法是什么
【发布时间】:2013-08-10 19:28:35
【问题描述】:

我对 PDO 很陌生。我只是想知道当数据完全插入数据库时​​获得结果的最佳方法是什么。我正在谷歌中四处寻找。看起来它很灵活。这让我想知道什么是正确的,什么是不正确的方式。

让我们看看例子:

$sql = $conn->prepare("INSERT INTO tb_user(user_name, user_email) VALUES(:user_name,:user_email);
$sql->execute(array(':user_name'=>$user_name, ':user_email'=>$user_email));
$affected_rows = $sql->rowCount();

如果数据完成插入数据库,我想从这个脚本获得结果。 如果它完成了-->我会像“完成”一样回显它并将其发送回 ajax 或等...

我试过了:

if($affected_rows){
echo"YEZZ!! complete";
}

还有

$all = $slq->fetchAll();
if(count($all)) {
echo"YEZZ!! complete";
}

if ($sql->execute){
echo"YEZZ!! complete";
//this one i know it will double insert data to database because I called it twice//
But I still want to know when can I use this method 

也许还有更多让我发疯的方法,想知道如果事情完成了,什么是获得结果的最佳方法: 插入后、删除后、更新后这 3 个语句是最重要的。

任何建议都可能很棒! } }

【问题讨论】:

    标签: php database pdo


    【解决方案1】:

    你可以这样做:

    $id = $conn->lastInsertId('IDCOLUMN');  
    

    然后执行查询并搜索id

    $stmt = $conn->prepare("SELECT * FROM tb_user WHERE IDCOLUMN = :id"); 
    $stmt->execute(array("id", $id);
    if($stmt->rowCount() > 0) {
       $result = $stmt->fetch(PDO::FETCH_ASSOC);
    }
    

    结果变量将包含您最后插入的记录

    【讨论】:

    • 谢谢你的回答:)这个也不错。
    • 这个很好:因为这样我就可以确保当客户端像机器人一样双击提交按钮时它不会同时插入双数据。但正如我所说,我对此很陌生......来自狼疮的评论似乎也是一个可靠的评论!出错时抛出错误信息。
    【解决方案2】:

    是的,您使用rowCount() 的方法是正确的。坚持下去。

    【讨论】:

      猜你喜欢
      • 2017-11-16
      • 2013-04-05
      • 2011-02-19
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多