我有两个名为admin的表,另一个名为Permission。
当我编辑用户时,我会在同一页面上显示包括权限在内的所有信息。
当我点击编辑时,我可以更新信息,但因为如果一个表获得更新,我会收到错误消息,即使表已成功更新。
$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';
}
当我不想更改用户的权限时,它确实给了我错误,因为我没有改变任何东西。但如果我对管理表进行更改,一切正常。
如果成功更新了一个或两个消息,我如何显示成功消息。
答案 0 :(得分: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
答案 1 :(得分: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');
答案 2 :(得分:0)
(!$result)
而不是(mysql_affected_rows($result) == 1)
,因为您正在尝试检查是否发生错误(这会导致mysql_query返回false),而不是表中是否实际更新了任何行。
答案 3 :(得分: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');