首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sql中的查询重置表

使用sql中的查询重置表
EN

Stack Overflow用户
提问于 2014-09-16 04:16:05
回答 2查看 1K关注 0票数 0

这里可以是在更新后重置表的任何重置查询。

我更新了一个colum然后我想重新设置它。

代码语言:javascript
复制
 id      name
 1       azeem
 2       arfan

更新表格。

代码语言:javascript
复制
  update table set name = 'abc' where id = 1;
  update table set name = 'xyz' where id = 2;

id      name
1       abc
2       xyz

更新:

代码语言:javascript
复制
  $sql = mysql_query("select * from table");
   while($row = mysql_fetch_array($sql)){
      echo $row['name'];
   }

在那之后我想重设它。我怎么能这么做呢?

EN

回答 2

Stack Overflow用户

发布于 2014-09-16 05:12:40

2种方法。

如果您正在运行一个测试服务器,并且希望恢复您正在更改的所有信息,那么您可以在备份恢复之后使表值在update之后。

否则,如果您在事务级别上讨论,您可以创建一个事务,而不是提交,而是回滚

代码语言:javascript
复制
<?php
/* Begin a transaction, turning off autocommit */
$dbh->beginTransaction();

/* Change the database schema and data */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
    SET name = 'hamburger'");

/* Recognize mistake and roll back changes */
$dbh->rollBack();

/* Database connection is now back in autocommit mode */
?>
票数 2
EN

Stack Overflow用户

发布于 2014-09-16 05:15:29

是的,正如sgeddes所说,你可以使用一个交易。当您使用不是transactioncommitted时,您可以在执行查询之前将rollback设置为状态。

试试这个:

代码语言:javascript
复制
//Start the transaction
mysql_query("START TRANSACTION");

//An update query
$yourUpdateQuery = mysql_query("UPDATE YOUR_TBL SET COLUMN = 'COLUMN_VALUE' WHERE COLUMN_ID = ID_VALUE");

//Some SQL select queries (note, that this do not have effect on your data, so this don't need to be in your transaction
$sql = mysql_query("select * from table");
while($row = mysql_fetch_array($sql))
{
    echo $row['name'];
}

//Some check here
if (1==1) {
    //Ok, let's finish it
    mysql_query("COMMIT");
} else {        
    //Not ok, rollback to the state before the transaction started.
    mysql_query("ROLLBACK");
} 

注意到,您和上面的示例使用的是不推荐的mysql_*函数。您应该使用PDO而不是mysql_*。下面是一个PDO示例:

代码语言:javascript
复制
<?php

    //PDO Database connection (if you haven't done this)
    $db = new PDO('mysql:host=localhost;dbname=DATABASE_NAME', "USERNAME", "PASSWORD");

    //Start the transaction
    $db->beginTransaction();

    //An update query
    $db = $db->exec("UPDATE YOUR_TBL SET COLUMN = 'COLUMN_VALUE' WHERE COLUMN_ID = ID_VALUE");

    //Some SQL select queries (note, that this do not have effect on your data, so this don't need to be in your transaction
    $sql = 'select * from table';
    foreach($db->query($sql) as $row)
    {
        echo $row['name'];
    }

    //Some check here
    if (1==1) {
        //Ok, let's finish it
        $db->commit();
    } else {        
        //Not ok, rollback to the state before the transaction started.
        $db->rollBack();
    }   



?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25860538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档