我正在尝试理解MySQL的功能。首先,我想设置一个变量,然后显示它。我在笔记本电脑上的phpMyAdmin中做这件事。我使用的是php 7.4。我不知道这是否是一个权限的事情。我有超级权限。
我读到的所有信息都说:
SET @myvar1 = 100;
SELECT @myvar1;
果然,我看到了值为100的@myvar1列
现在,如果我输入:
SELECT @myvar1;
我只看到1列@myvar1的值为null。
这样的变量是一次性的吗,看了一遍就没了??
MySQL文档为用户变量显示了这一点(我认为X代表十六进制):
SET @v1 = X'41';
SET @v2 = X'41'+0;
SET @v3 = CAST(X'41' AS UNSIGNED);
SELECT @v1, @v2, @v3;
果然,我看到@var2和@var3显示为65,但@var1显示为**[BLOB - 1 B]**
如果我重复SELECT查询,所有3个都显示为null。我认为用户变量应该持续整个用户会话。这是错误的吗?
如果我先运行SET查询,然后运行SELECT查询,它们都显示为空
1条答案
按热度按时间dohp0rv51#
就像@Zaffy说的,phpmyadmin在你背后干扰MySql的连接。
这是一个学习如何使用SQL的糟糕的工具。为了有效地使用SQL,我们需要了解存在于 connection 作用域中的东西。@变量是连接作用域。临时表、插入id值和其他东西也是如此。phpmyadmin会打开许多新连接来执行您告诉它的操作,因此您必须学习使用的连接作用域的东西不能正常工作。请查看mysql命令行工具或Windows上的HeidiSQL。还有许多其他不错的SQL客户端程序。