首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP同时更新两个表

PHP同时更新两个表
EN

Stack Overflow用户
提问于 2012-07-08 22:37:13
回答 4查看 3.4K关注 0票数 0

我有两个桌子,一个叫管理,另一个叫许可。

  • 管理表有包含以下信息的用户列表(id、用户名、密码)
  • 权限表具有以下信息(user_id、permission_name、user)

在编辑用户时,我会在同一页上显示包括权限在内的所有信息。

当我单击“编辑”时,我可以更新信息,但是如果一个表得到更新,就会收到错误消息,甚至表也已成功更新。

代码语言:javascript
复制
$sql = " UPDATE admin SET username='test', password='test' WHERE id=1;";
$result = mysql_query($sql, $connection);

if( mysql_affected_rows( $result ) == 1 )
{
   $sql = " UPDATE permission SET permission_name ='add_user', user='admin' WHERE user_id=1;";
   $result = mysql_query($sql, $connection);
   echo 'successfully';
}

else
{
   echo 'some error';
}

当我只是习惯于更改用户的权限时,它确实会给我带来错误,因为我没有改变任何东西。但是,如果我对管理表进行更改,一切都很好。

如果其中一个或两者都已成功更新,如何显示成功消息。

EN

回答 4

Stack Overflow用户

发布于 2012-07-08 22:44:40

您可以将这两个表连接在一起,同时更新它们:

代码语言:javascript
复制
UPDATE admin a
INNER JOIN permission b ON a.id = b.user_id
SET
    a.username = 'test',
    a.password = 'test',
    b.permission_name = 'add_user',
    b.user = 'admin'
WHERE a.id = 1
票数 5
EN

Stack Overflow用户

发布于 2012-07-08 22:45:05

代码语言:javascript
复制
<?php

$success = true;

$sql = " UPDATE admin SET username='test', password='test' WHERE id=1;";
$result = mysql_query($sql, $connection);

if(!mysql_affected_rows( $result ))
   $success = false;

$sql = " UPDATE permission SET permission_name ='add_user', user='admin' WHERE user_id=1;";
$result = mysql_query($sql, $connection);

if(!mysql_affected_rows( $result ))
   $success = false;

echo ($success ? 'Success' : 'Error');
票数 0
EN

Stack Overflow用户

发布于 2012-07-08 22:53:13

在这种情况下,Zane Bien的答案是最好的选择,但是对于不能组合查询的情况,您应该检查(!$result)而不是(mysql_affected_rows($result) == 1),因为您试图检查是否发生了错误(这将导致mysql_query返回false),而不是表中是否实际更新了任何行。

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

https://stackoverflow.com/questions/11387282

复制
相关文章

相似问题

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