禁止此会话的mysql UPDATE

时间:2014-06-23 15:43:47

标签: php mysql mysqli

我有一个不允许我向用户授予权限的虚拟主机。 所以我只有一个可用的用户,具有SELECT / UPDATE / DELETE权限。

我使用PHP MySQLi连接到MySQL。

有没有办法告诉MySQL(数据库本身)或MySQLi(PHP对象)仅禁止当前会话的更新/删除?

目标是拥有这种代码:

$mysqli = new mysqli(MYSQLI_IP, MYSQLI_USER, MYSQLI_PASSWORD,n MYSQLI_DBNAME);

// I have SELECT privileges so it works
$mysqli->query('SELECT * FROM `table`');

// This should work too because I have UPDATE privilege
$mysqli->query('UPDATE `table` SET `date`=NOW()');

// This is the "command" I'm looking for
$mysqli->disallowUpdates();

// Ok, it still works
$mysqli->query('SELECT * FROM `table`');

// This must not work because I told mysqli (php)/mysql (db)
// to disallow updates for this session
$mysqli->query('UPDATE `table` SET `date`=NULL');

1 个答案:

答案 0 :(得分:2)

你不能以任何方式提到这一点。你需要自己做这个逻辑,例如:

在某些条件下授予或不允许:

session_start();
$_SESSION['isAllowedToUpdate'] = false;

做更新:

if (isset($_SESSION['isAllowedToUpdate']) && $_SESSION['isAllowedToUpdate']) {
  // do some updates
}