0

mysql には「users」と「users_info」という 2 つのテーブルがあります。最初のテーブルには、電子メールやパスワード、名前などのログイン データが含まれています。

2 番目のテーブルには、住所、生年月日、経歴などの詳細情報が含まれています。

現在、これらのユーザーに関する情報を変更できる管理パネルに取り組んでいます。データを取得するために結合を使用していますが、保存はどうですか?

テーブルに関係なくデータを保存するにはどうすればよいですか? それがたった1つのテーブルだったら(PHPで):

$values = Array(
  "email" => "foo@test.com", //this goes into "users"
  "name" => "john", //this one, too
  "bio" => "i is cool" //this one should to go users_info!!
);

foreach($values as $k=>$v) {
  $query = " UPDATE users SET '$k'='$v' WHERE id=7653 ";
}

「bio」は users_info 内の列ではないため、これはエラーになります。何か案は?

前もって感謝します。

4

4 に答える 4

1

コーディングの方法は少しあいまいですが、今のところ次のようにしてみてください。

$usersColumns = array('email','password',...);
$usersInfoColumns = array('address','dob',...);
foreach($values as $k=>$v) {
   if(in_array($k,$usersColumns)){
     $tableName = 'users';
   }
   else if(in_array($k,$usersInfoColumns)){
     $tableName = 'users_info';       
   }
   $query = "UPDATE $tableName SET '$k'='$v' WHERE id=7653";
 }
于 2013-02-08T13:01:40.640 に答える
0

もちろん、複数テーブルの構文を使用できます。

UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]

しかし、もし私があなたなら、気にせず、2 つの定期的な単一テーブルの更新を実行するだけです。エラーを犯す (そして意図しないレコードを更新する) のは簡単で、目に見えるメリットはありません。

于 2013-02-08T13:02:28.170 に答える
0
$table = "users";
foreach($values as $k=>$v) { 
if($values = "bio"{ 
$table = "users_info"; 
} 
$query = "UPDATE '$table' set '$k'='$v' WHERE id = 7653";
$table = "users"; 
}
于 2013-02-08T13:01:14.253 に答える
0

ループ内のクエリはお勧めしません。最初に投稿の値を分離する必要があると思います。

<form method="post">
    <input type="text" name="user[name]">
    <input type="text" name="user[email]">
    <textarea name="user_info[bio]"></textarea>
</form>

そしてPHP部分;

$user_post      = (array) $_POST['user'];
$user_info_post = (array) $_POST['user_info'];
$user_query = $user_info_query = array();
foreach ($user_post as $k => $v) {
    // db_escape is your data security
    $user_query[] = sprintf("`%s` = '%s'", $k, db_escape($v));
}
if (!empty($user_query)) {
    $user_query = join(', ', $user_query);
    // db_query("UPDATE users SET ...");
}
if (!empty($user_info_query)) {
    $user_info_query = join(', ', $user_info_query);
    // db_query("UPDATE users_info SET ...");
}
于 2013-02-08T13:22:11.103 に答える