我尝试实施 UPSERT 时出现问题

2024-04-01

我在检查更新 PostgreSQL 中的表的条件时遇到此问题。它必须检查用户是否下载过一次,如果是,则添加 +1acessos.

<?php
$result2 = pg_query("SELECT * from downloads WHERE (nome = $_POST[nome_download] AND email = $_POST[email_download])");
if (pg_num_rows($result2) == 0){
$result = pg_query("INSERT INTO downloads (nome, email, estado, arquivo, acessos) VALUES ('$_POST[nome_download]','$_POST[email_download]','$_POST[estado_download]','$_SESSION[nome_arquivo_download]','1')");
}else{
$arr[acessos] = $arr[acessos] + 1;
$result = pg_query("UPDATE downloads SET acessos = $arr[acessos] WHERE (nome = $_POST[nome_download] AND email = $_POST[email_download])");
}


if (!$result){
echo "Não foi possível realizar o cadastro. Tente fazer o download mais tarde.";
}
else
{
echo "soft_bd";
pg_close();
}
?>

你参考$arr但从您发布的代码中并不清楚分配的位置。不管怎样,如果你想增加当前值acessos乘以 1,该方法是在多用户环境中完全不安全.

你也完全开放SQL注入。请改用准备好的语句。

In Postgres 9.5你甚至可以在单一陈述与新的UPSERT 实施INSERT ... ON CONFLICT ON ... DO UPDATE http://www.postgresql.org/docs/9.5/interactive/sql-insert.html#SQL-ON-CONFLICT- 假设有一个UNIQUE or PRIMARY KEY约束于(nome, email):

$sql = 'INSERT INTO downloads AS d (nome, email, estado, arquivo, acessos)
        VALUES ($1, $2, $3, $4, 1)
        ON CONFLICT ON (nome, email) DO UPDATE 
        SET    acessos = EXCLUDED.acessos + 1';

对于重复调用,您可以使用pg_prepare http://php.net/manual/en/function.pg-prepare.php and pg_execute http://php.net/manual/en/function.pg-execute.php。对于单次调用使用pg_query_params http://php.net/manual/en/function.pg-query-params.php:

pg_query_params($sql, array($_POST[nome_download]
                          , $_POST[email_download]
                          , $_POST[estado_download]
                          , $_SESSION[nome_arquivo_download]));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我尝试实施 UPSERT 时出现问题 的相关文章

  • SMTP 配置在生产中不起作用

    我正在尝试在提交表单时发送电子邮件 我正在使用 PHPMailer 使用以下配置发送邮件 mail new PHPMailer mail gt isSMTP mail gt Host mail example in mail gt Port
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • 如何使用PostGIS将多边形数据转换为线段

    我在 PostgreSQL PostGIS 中有一个多边形数据表 现在我需要将此多边形数据转换为其相应的线段 谁能告诉我如何使用 PostGIS 查询进行转换 提前致谢 一般来说 将多边形转换为线可能并不简单 因为没有一对一的映射 http
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • Google Cloud SQL - Postgresql 存储不断增长

    我最近开始修补 Google Cloud SQL PostgreSQL 我创建了一个空数据库 在 4 5 天的时间里 其存储使用量已增长到超过 20GB 它一直在上升 但数据库中没有数据 它甚至没有被使用 有谁知道会发生什么以及如何阻止它
  • 为什么验证不起作用并跳转到另一个页面?

    我写了一个customer display php来验证数据 到目前为止只有名字 但无论名字字段是否为空 网页都会跳转到customer search php并且没有更改数据库中的信息 为什么
  • 如何在类似 MVC 的页面中加载基于漂亮 URL 的类?

    我想请教一些关于如何解决这个问题的提示 我正在尝试构建自己的 MVC 网站 我了解了 URL 的基础知识 http example com blog cosplay cosplayer expo today 博客 gt 控制器cosplay
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • 独立对列进行排序,使得所有空值都位于每列的最后

    这是一个名为的示例表animal name color fox brown fox red dog gold 现在 我想要的是这样的结果 fox dog brown gold red 名称应该是结果的列 不同颜色值作为行 我的第一个想法是
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • 如何在laravel中注册后自动登录

    我在 laravel 中注册用户时遇到问题 user假设是包含所有数组元素的数组 同时自动登录以下代码结果false 数据库中保存的密码是hash make password user id this gt user model gt ad

随机推荐

  • 创建一个简单的计时器来计算秒、分钟和小时

    我正在尝试创建一个非常简单的程序 基本上是一个计时器 我有三套标签 lbl seconds lbl minutes and lbl hours 这些标签的默认值为00 00我希望计时器为每个标签更改它 我已经用谷歌搜索过这个 但我似乎找不到
  • Cocoa 中的手动绑定

    我有一个 ImageView 显示一个锁 通知打开的文件是否被锁定 我有 2 张锁定和解锁案例的图像 我想将显示的图像与代表打开文件的对象的布尔值同步 为此 我希望 ViewController 根据对象的锁定状态更改 ImageView
  • 如何将 pyspark 数据框保存在单个 csv 文件中

    这是这个的延续如何将数据帧保存到 csv pyspark https stackoverflow com questions 60498321 how to save dataframe into csv pyspark thread 我正
  • 查询以选择两个日期之间的数据,格式为 m/d/yyyy

    当我尝试从两个日期之间的表中选择记录时 我遇到了问题 m 使用以下查询 select from xxx where dates between 10 10 2012 and 10 12 2012 这个查询对我有用 但是当日期的格式如 1 1
  • React 的 Webpack 错误

    我正在尝试根据此配置 webpacktutorial https robots thoughtbot com setting up webpack for react and hot module replacement并不断收到相同的错误
  • 如何在编码时阻止自己覆盖 Python 函数?

    在追踪 Python 代码中的错误时 经常令人头疼的一个问题是看似无害的代码片段 如下所示 list a b c c list set list 这失败了 因为我用变量列表覆盖了函数 list 显然是一个人为的例子 但重点是 Python
  • AWS 上的 Node JS“Hello world”服务器

    我尝试在 AWS t1 micro 实例上运行 Hello world 服务器 我做了什么 我在aws上安装了Node 写了这样的东西 require http createServer function request response
  • 在 html2pdf 中使用 css 浮动

    我使用 float 将 2 个 div 放置在彼此旁边 a href printbox php print a
  • Excel countif vba 代码,其中包含产生值的条件

    我不确定我想要实现的目标是否可能 所以这里是 我有 2 张工作簿 第一张表包含员工的原始数据以及他们参加或未参加的培训 他们无法参加培训 工作表包含几列 例如 姓名 特殊 ID 每个员工都不同 2 个空白列 存在 是 否 以及更多 第二张表
  • MongoDB:更新子数组的属性仅更新第一个元素

    匹配元素如下所示 id oid 519ebd1cef1fce06f90e3157 from Tester2 to Tester messages username Tester2 message heeey read false usern
  • 计算异或的算法

    我想计算 0 到 n 1 2 1 之间的数字与 0 到 n 1 2 1 之间的每个数字的异或 我想在 O n 时间内完成此操作 并且不能使用 XOR OR AND 运算 如果我知道X和Y的XOR 我可以在常数时间内计算X 1和Y的XOR吗
  • 从 ARC 静态库访问 @property 时,ARC 应用程序崩溃

    我有一个 ARC 自动引用计数 questions tagged automatic reference counting 构建静态库 也称为 ARC 的应用程序 该应用程序将正常启动 但当执行读取或写入静态库中的 property 的操作
  • 相对路径不适用于 css 中的图像

    我有以下文件结构 C wamp myproject admin webroot images 我有一个位于 admin 文件夹内的 index php 文件 它调用位于同一文件夹中的 header inc php 文件 header inc
  • 将 MySQL 连接到 Visual Studio C#

    我正在尝试编写数据访问代码以将 MySQL 连接到 Visual Studio 到目前为止我有这段代码 但我不知道它是否正确 我正在使用我的书 并注释掉了一些其他内容 但是当我包含注释掉的信息时 我收到了错误 public static M
  • python中最好/最容易使用的加密库是什么[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 python 加密几个文件
  • ReactiveMongo 是如何实现的,使其被认为是非阻塞的?

    阅读有关 Play Framework 和 ReactiveMongo 的文档让我相信 ReactiveMongo 的工作方式是使用很少的线程并且从不阻塞 然而 从 Play 应用程序到 Mongo 服务器的通信似乎必须发生在某处的一些线程
  • jQuery 模板 - 在模板内执行 JS 代码

    我正在尝试了解有关 jQuery 模板的更多信息 但似乎无法在模板内执行任何 JS 调用 请注意 我的 objectToString 函数从未被调用 只是呈现为字符串 我一时兴起尝试将其包装在 中 但没有成功 有谁可以帮忙吗 安东尼 你可以
  • 如何使用另一个模式的表编写存储过程?

    为了调用Oracle的函数和过程 表必须在HR用户中吗 当我从另一个用户运行函数时 它给我一个编译错误 对于我的项目 我想从另一个用户运行函数和过程 我该如何实施 要使用另一个模式中的表编写函数或过程 表所有者需要授予我们所需的权限 例如
  • 一个人可以在 Magento 社区版上托管多个商店吗?

    一个人可以在 Magento 社区版上托管多个商店吗 以及如何在设置每个新商店时自动为其创建子域 是的 您可以从 Magento 社区版运行多个站点 Magento 官方博客实际上刚刚发布了一篇关于此问题的帖子 您可能想查看一下 http
  • 我尝试实施 UPSERT 时出现问题

    我在检查更新 PostgreSQL 中的表的条件时遇到此问题 它必须检查用户是否下载过一次 如果是 则添加 1acessos