这里可以是在更新后重置表的任何重置查询。
我更新了一个colum然后我想重新设置它。
id name
1 azeem
2 arfan更新表格。
update table set name = 'abc' where id = 1;
update table set name = 'xyz' where id = 2;
id name
1 abc
2 xyz更新:
$sql = mysql_query("select * from table");
while($row = mysql_fetch_array($sql)){
echo $row['name'];
}在那之后我想重设它。我怎么能这么做呢?
发布于 2014-09-16 05:12:40
2种方法。
如果您正在运行一个测试服务器,并且希望恢复您正在更改的所有信息,那么您可以在备份和恢复之后使表值在update之后。
否则,如果您在事务级别上讨论,您可以创建一个事务,而不是提交,而是回滚。
<?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 */
?>发布于 2014-09-16 05:15:29
是的,正如sgeddes所说,你可以使用一个交易。当您使用不是transaction的committed时,您可以在执行查询之前将rollback设置为状态。
试试这个:
//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示例:
<?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();
}
?>https://stackoverflow.com/questions/25860538
复制相似问题