0

我有两张表,一张称为 admin,另一张称为 Permission。

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

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

当我单击编辑时,我可以更新信息,但是因为如果一个表得到更新,我会收到错误消息,即使表已成功更新。

$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';
}

当我只是不想更改用户的权限时,它确实给了我错误,因为我没有更改任何内容。但如果我对管理表进行更改,一切正常。

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

4

4 回答 4

5

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

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
于 2012-07-08T22:44:40.577 回答
0
<?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');
于 2012-07-08T22:45:05.290 回答
0

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

于 2012-07-08T22:53:13.783 回答
0

存储过程怎么样:

DELIMITER $$
CREATED PROCEDURE DoUpdate(TheID INT, TheUser VARCHAR(255), ThePassword VARCHAR(255), ThePermission VARCHAR(255), ThePermissionUser VARCHAR(255))
BEGIN

    UPDATE admin 
    SET username= TheUser
        , password= ThePassword
    WHERE id = TheID;

    IF ROW_COUNT() = 1 THEN
        UPDATE permission 
        SET permission_name = ThePermission
            , user = ThePermissionUser
        WHERE user_id = TheID;
    END IF;
END $$

然后:

CALL DoUpdate(1, 'test', 'test', 'add_user', 'admin');
于 2012-07-08T23:16:13.480 回答