Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不允许此会话的mysql更新_Php_Mysql_Mysqli - Fatal编程技术网

Php 不允许此会话的mysql更新

Php 不允许此会话的mysql更新,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个不允许我向用户授予特权的web主机。 因此,我只有一个可用的用户,具有选择/更新/删除权限 我使用PHP和MySQLi连接到MySQL 有没有办法告诉MySQL(数据库本身)或MySQLi(PHP对象)只允许对当前会话进行更新/删除? 目的是制定此类代码: $mysqli = new mysqli(MYSQLI_IP, MYSQLI_USER, MYSQLI_PASSWORD,n MYSQLI_DBNAME); // I have SELECT privileges so it wor

我有一个不允许我向用户授予特权的web主机。 因此,我只有一个可用的用户,具有选择/更新/删除权限

我使用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');

你不能以任何方式那样做。您需要自己完成该逻辑,例如:

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

session_start();
$_SESSION['isAllowedToUpdate'] = false;
执行以下更新:

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

旁注:您在
中有一个(杂散的)
n
(MYSQLI\u IP、MYSQLI\u用户、MYSQLI\u密码、n MYSQLI\u DBNAME)
typo?定义“当前会话”。你的意思是PHP吗?特权是基于用户的,而不是基于会话的。我想,但我有点不喜欢它,因为在注入的情况下,我不会对注入的更新有任何保护。但如果没有其他方法,我会坚持这个解决方案…@Xenos编写防注入代码,即使用带有占位符的准备好的语句。@VMai它将只针对客户端而不是开发人员进行防注入:如果(坏的)开发人员编写
更新
而不是
选择
,这将是不安全的,除非我使用不同的
select(…)
update(…)
方法执行
CustomMySQLi
类。