问题标签 [user-variables]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 从 $_SESSION 发送变量,通过 AJAX 到 PHP 进行密码更改,怎么做?
我正在我的 Web 应用程序中为已经登录的用户更改密码(因此这不是忘记密码选项)。我有一个 HTML 表单,然后是用于表单验证的外部 JS 文件,如果输入的数据通过验证,则通过 AJAX 将输入的值发送到 PHP 脚本,然后验证数据,如果一切正常,更新数据库中的密码。我现在遇到的问题是如何将用户 ID 从 $_SESSION 变量传递到 PHP 脚本,该脚本通过用户 ID 在用户数据库中找到该行并更改密码。我在互联网上搜索,我没有找到一个很好的答案来解决我的问题。我试图避免<input type="hidden" value="<?php echo $_SESSION["userid"]?>">
方法,因为它缺乏安全性。
这是我的脚本:
HTML
注意:header.php在session_start();
其顶部。
Javascript/JQuery
PHP
mysql - 由于用户变量太长而无法运行准备好的语句?
问题
我有一个工作存储过程 (SP),它接受 3 个参数(一个 id、一个起始日期和一个截止日期)。这个 SP 在我的测试系统中运行良好,其中从t1.name
中返回的所有值GROUP_CONACT
都很短,并且GROUP_CONCAT
.
问题是当我把它放到 LIVE 系统中时,还有一些问题需要添加,GORUP_CONCAT
而且t1.name
值比预期的要长得多。
从我在尝试调试脚本时可以看到的结果来看,问题似乎是该变量@SQL
无法存储从GROUP_CONACT
查询中返回的所有信息。
编码
我试过的
我尝试设置@SQL
为局部变量(显然这删除了@),但随后我在尝试准备代码底部的语句时遇到错误,解释它不需要局部变量。
代码的目的
该代码用于从未知数量的结果中填充数据透视表。这意味着我需要第一GROUP_CONCAT
部分在 end 语句上构建列名以进行准备。
预期产出
问题的数量不会知道,问题的名称也不会知道。
mysql - 选择行号等于其他表中某个值的行
我有两张桌子:游戏和任务
游戏看起来像这样:
任务如下所示:
由于任务同时包含我想要选择的手动(使用 M taskType)和自动(A)任务。我的 API 包含两个变量:mTaskCounter 和 aTaskCounter。例如,如果 mTaskCounter = 3 我想从任务中选择类型为手动任务的第三行。因为它实际上是 id = 4 的行,所以我不能在 WHERE 子句中使用 id 。
我已经实现的是:
这表示“where 子句中的未知列‘rowNumber’
我也尝试使用 LEFT JOIN:
结果相同。自从我每天使用mysql以来已经有一段时间了,不知道如何修复它。我还想制作两张表——manualTasks 和 autoTasks 而不是任务,这样它就可以通过常见的方式解决问题select taskContent from autoTasks a LEFT JOIN game ON a.id = game.autoTaskCounter
mysql - MySQL 8 - 表达式中的用户变量已弃用(复杂计算)
// 编辑 //
以下是原始问题,但我的问题可以通过一个问题真正简化......如何在不使用用户变量的情况下获得以下输出?!
// 结束编辑 //
我有一张如下表...
“每日回报”是 list_id 价格的百分比变化,每天计算,last_return 是第一个/起始回报数。
我需要使用以下逻辑计算累积回报指标:
因此,我有以下查询...
当我在一个过程中运行它时,它会抛出一个警告:
在表达式中设置用户变量已被弃用,并将在未来的版本中删除。请改为在单独的语句中设置变量。
我在stackoverflow上看到了一些其他类似的问题,但它们都是简单的增量计算,可以用ROW_NUMBER() OVER或SUM() OVER代替,但我无法弄清楚如何在上面的查询中删除变量。
最初,我使用 3-4 个变量,但现在我已将其缩减为一个,并请求您帮助删除最后一个。
编辑 2
用实际数据查询:(包括戈登的计算)
mysql - mysql select查询不适用于通过用户变量设置的限制和偏移量
我会简短:
在职的
不工作
所以,我需要“不工作”的版本才能工作。我怎样才能做到这一点?
我有同样的错误:'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@limit_number offset @offset_number; END''
。
为什么?类型没问题,你看... 什么问题?也许值可以用一些错误代替?
我正在使用 JetBrains DataGrip,MySQL 8.0.15。
mysql - 什么布尔值返回将整数或字符串分配给变量
我使用用户变量来模拟
注意@type
变量。我将它设置a
为使问题更清楚,但起初是一个空字符串。
您可以看到第一行输入最后一个条件并将两个变量都设置正确:
输出
Buf if wsf_ref
is aVARCHAR
我得到了不同的结果
在这里你可以看到第一行变量@type
没有设置并且仍然有a
输出
经过一些调试后,我发现问题出在最后一个分配上
在第一种情况下,当wsf_ref
是整数时,赋值评估为真,然后还检查第二个条件。在第二种情况下,当wsf_ref
是字符串时,结果为假,第二个条件被忽略。
我将条件更改为:
因此,即使第一个条件为假,仍然尝试评估第二个条件,现在两个查询都可以正常工作。
那么为什么分配@ref
一个数字会得到一个与分配一个字符串不同的布尔值呢?
mysql - MySQL:使用 IN (@variable) 更新表失败
我正在尝试使用 IN 函数和变量更新表。
变量的内容是一个子查询,它返回每个字符串的预期值(即 ID)。当我复制/粘贴更新中的值时,一切都很好。
那么为什么当我使用变量时,它只更新第一行呢?
mysql - 触发器内部的 SELECT max() 返回 NULL,单独返回非 NULL 值
考虑以下架构:
表 1:Schedule_items
表 2:Schedule_items_tree
第二个表的目标是存储计划项目之间的关系。为了使它成为可能,每当我向表 1 添加新行时,都会触发插入后触发器并将新行添加到表 2。触发器有 3 个步骤:
- 添加自我关系;
- 添加新项目和给定父项之间的关系
- 添加新项目和所有后代之间的关系(基于项目的父项)。
目前,我确实对第 2 步有疑问,如下所示:
查询SELECT max(sequence)+1
始终返回 NULL(每次执行触发器时,我的临时表都会获取新条目;仅为故障排除目的创建表)。这完全是奇怪的,因为执行相同的 SELECT 查询,其值与来自触发器结果的非 NULL 值相同。
到目前为止,无论我尝试什么(以不同方式设置 v_seq)都以相同的 NULL 结果结束。任何提示如何使该触发器的步骤起作用?
mysql - 如何让 MySQL/MariaDB 用户定义的变量在 grafana 中工作?
使用 MariaDB 5.5(我们的星号 cdr 数据库)并尝试从数据库中的现有数据中按日期构建时间序列,但希望加入包含所有日期的列以考虑没有数据的日期。以下查询(简化)在 MySQL Workbench 中工作,以获取过去 180 天内所有日期的列表,但在 grafana 中出现语法错误。
我得到的错误如下:
错误 1064:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的 'SELECT DATE(DATE_ADD(DATE_ADD(CURRENT_DATE(), INTERVAL -180 DAY), INTERVAL @i:=@' 附近使用正确的语法
如果我只是从查询中删除第一行,它似乎与“SET”关键字有关,因为我没有错误,但也没有返回数据。我已经针对这个 MariaDB 和一个单独的 MySQL 数据库测试了这种语法,并且发生了同样的事情。为了进一步简化,即使使用以下查询,我也会遇到相同的错误:
有人知道为什么 grafana 不喜欢 SET 关键字吗?或者如何在不使用变量的情况下获取两个日期之间的日期列表?
提前致谢。