0

我正在使用 php 在我的数据库上制作一些 mods,我有两个相同的表,我想将一行从第一个表移动到第二个表,我如何使用纯 php 和 mysql 来做到这一点。

这就是我的桌子的样子

CREATE TABLE users (
 username varchar(30) primary key,
 password varchar(32),
 userid varchar(32),
 userlevel tinyint(1) unsigned not null,
 email varchar(50),
 timestamp int(11) unsigned not null
);

到目前为止,这是我的 php 代码

function procMoveUser(){
          global $session, $database, $form;
          /* Username error checking */
          $subuser = $this->checkUsername("user");

          /* Errors exist, have user correct them */
          if($form->num_errors > 0){
             $_SESSION['value_array'] = $_POST;
             $_SESSION['error_array'] = $form->getErrorArray();
             header("Location: ".$session->referrer);
          }
          /* move the user */
         else{

      $q = "SELECT * FROM ".TBL_USERS." WHERE username = '$subuser'"; 
      $result = $database->query($q); 

      if($result && $result->num_rows == 1){
          while($array = $result->fetch_assoc() ){
              $second_query = "INSERT INTO".TBL_USERSDONT."VALUES ($array['user'], $array['password'], $array['userid'] , $array['userlevel'] , $array['email'] , $array['timestamp'])"; 
              $second_result = $mysqli->query($second_query);
              if($second_result){
                  // it worked!
                  $q = "DELETE FROM ".TBL_USERS." WHERE username = '$subuser'";
                  $database->query($q);
              }
        }
      }




  }
       }
4

2 回答 2

1

首先,SELECT * FROM要移动的行的第一个表。然后,如上所述,使用第一个表中的值运行 INSERT 语句。

$q = "SELECT * FROM ".TBL_USERS." WHERE username = '$username'"; 
$result = $mysqli->query($q); 

if($result && $result->num_rows == 1){
    while($array = $result->fetch_assoc() ){
        $second_query = "INSERT INTO second_table VALUES ($array['user'], $array['something'])"; 
        $second_result = $mysqli->query($second_query);
        if($second_result){
        // it worked!
        }
    }
 }
于 2012-06-19T18:05:18.987 回答
0

也许这会有所帮助:将现有的 MySQL 表复制到新表

于 2012-06-19T18:12:12.243 回答