mysql数据库查询序列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库查询序列相关的知识,希望对你有一定的参考价值。
mysql数据库 获取当前序列号 或者插入一条数据怎么得到刚插入数据的自动生成主键ID值。 求完整SQL语句 表为test 在线等。
问题分析:序列=自增ID,是数据库根据数据插入先后顺序自动生成的。
查询方式:
只能再查询自增ID即可
具体操作:MYSQL获取自增ID的四种方法
select max(id) from tablename
SELECT LAST_INSERT_ID() 函数
LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。
select @@IDENTITY;
@@identity 是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。
SHOW TABLE STATUS;
得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID.
mysql> CREATE TABLE test_create_tab2 (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.09 sec)
-- 插入一行数据
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id');Query OK, 1 row affected (0.03 sec)
-- 获取刚才插入那行的 自增ID。
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
-- 插入一行数据
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');Query OK, 1 row affected (0.03 sec)
-- 获取刚才插入那行的 自增ID。
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 2 |
+----+
1 row in set (0.00 sec)
-- 最后核对一下数据。
mysql> select * from test_create_tab2;
+----+---------+
| id | val |
+----+---------+
| 1 | NO id |
| 2 | NO id 2 |
+----+---------+
2 rows in set (0.00 sec)本回答被提问者和网友采纳 参考技术B select last_insert_id(); 其中last_insert_id()为一函数,自动返回最后一个insert或update为auto_increment列设置的第一个发生的值 参考技术C select last_insert_id(); 参考技术D 设计数据库最好是有自动生成主键ID,再加上自己定义的unique的字段吧,这样你插进去,再根据这个unique的字段得到自动生成的Id。。。。追问
mysql不是主键自动序列的么。可以写一个sql语句查询ID例子么
MySQL从查询结果中获取数据
【中文标题】MySQL从查询结果中获取数据【英文标题】:MySQL get data from a query result 【发布时间】:2017-04-25 15:22:15 【问题描述】:我是 PHP 和 MySQL 开发的新手。我使用 Visual Studio 在 Cordova 中构建了一个应用程序。该应用程序的工作方式如下:
-
用户从下拉列表中选择序列号
选择序列号后,数据显示在图表上
应用中有一个拨动开关,通过它我根据
serial number
在数据库中插入on
或off
状态
我想做什么?
当用户选择任何序列号时,开关将根据该特定serial number
的Command Name
显示最后一个ON
或Off
状态。
为此,我生成了一个msql query
,这个查询显示了所选序列号的最后一个command name
下面是我的 PHP 代码:
<?php
require_once('config.php');
$dsn = $_REQUEST['Device_Serial_Number'];
$cmd_Name = $_REQUEST['Command_Name'];
$sqlFet = "select ADC.Server_Device_Command_ID , ADC.Device_ID ,
ADC.Server_Command_ID as Server_Command_ID, ASD.Command_Name
from ADS_Server_Device_Command ADC
inner join ADS_Server_Command ASD on adc.Server_Command_ID = asd.Server_Command_ID
inner join ADS_Device dsn on adc.Device_ID = dsn.Device_ID
where dsn.Device_Serial_Number = '$dsn'
order by adc.Server_Device_Command_ID desc LIMIT 1";
$result = mysqli_query($con,$sqlFet);
mysqli_close($con);
echo $cmd_Name;
?>
下面是我在 JavaScript 中的 AJAX 调用:
$.ajax(
method: "GET",
url: "http://localhost:MyPort/server/toggleFetch.php",
data: Command_Name: tData , Device_Serial_Number: selectedVal ,
success: function (data)
var dt = data;
if (dt.Command_Name == "On")
$("#cmn-toggle-7").prop('checked', true);
else if (dt.Command_Name == "Off")
console.log('else');
$("#cmn-toggle-7").prop('checked', false);
,
error: function (xhr, status, error)
alert(xhr.responseText, status, error);
//toastr.success('Data not fetched', '', timeOut: 2000 )
//alert('Error');
);
但它没有显示所需的结果并给出如下图所示的错误:
更新代码:
下面是我的php
更新代码
require_once('config.php');
$dsn = $_REQUEST['Device_Serial_Number'];
//$cmd_Name = $_REQUEST['Command_Name'];
$sqlFet = "select ADC.Server_Device_Command_ID , ADC.Device_ID ,
ADC.Server_Command_ID as Server_Command_ID, ASD.Command_Name
from ADS_Server_Device_Command ADC
inner join ADS_Server_Command ASD on adc.Server_Command_ID = asd.Server_Command_ID
inner join ADS_Device dsn on adc.Device_ID = dsn.Device_ID
where dsn.Device_Serial_Number = '$dsn'
order by adc.Server_Device_Command_ID desc LIMIT 1";
$result = mysqli_query($con,$sqlFet);
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
mysqli_close($con);
echo $row["Command_Name"];
下面是ajax
$.ajax(
method: "GET",
url: "http://localhost:MyPort/server/toggleFetch.php",
//dataType: "json",
data: Command_Name: tData , Device_Serial_Number: selectedVal ,
success: function (data)
var dt = data;
if (dt == "On")
$("#cmn-toggle-7").prop('checked', true);
else if (dt == "Off")
console.log('else');
$("#cmn-toggle-7").prop('checked', false);
,
error: function (xhr, status, error)
alert(xhr.responseText, status, error);
//toastr.success('Data not fetched', '', timeOut: 2000 )
//alert('Error');
);
现在在运行代码时我没有收到任何错误,但我仍然没有得到我需要的结果,即切换不会改变它的状态
更多信息请看下图
我不知道是什么问题,任何帮助将不胜感激。
【问题讨论】:
是toggleFetch.php
中的php代码吗?
好吧,不会有任何 dt.Command_name 因为它不是 json 对象,因此没有什么可以真正得到的。如果你只是简单地将数据放入一个 div 中,你可能只会看到 echo $cmd_Name;
的文本,所以试试 echo json_encode($cmd_Name);
看看它是否出现。否则你可能需要JSON.parse()
它
好吧,我试试,我告诉你
@A.Lau 尝试使用 JSON.parse()
并没有它,但仍然出现相同的错误
echo $cmd_Name;
应该回显什么?
【参考方案1】:
第一步:不要将带有 AJAX 的 command_name 发送到 PHP 脚本(这会导致第 5 行出现错误!!),这不是必需的。第二步:在 PHP 脚本中,您必须更改 echo $command_name,以根据 $dsn 从 DB 回显结果。所以从 DB 回显结果。
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
echo $row["Command_name"]; //This should show ON/OFF state from DB to AJAX.
【讨论】:
第三步:你有 IF dt.Command_name = "..... 我认为应该有 IF dt = "on" 因为 AJAX 会放入 PHP 脚本的变量 DATA 输出中。例如您的 PHP 脚本将回显 ON(基于 $dsn 的状态),而 AJAX 会将其置于变量 DATA 中。所以这是错误的(dt.Command_name)。您必须更改它。 它仍然在第 5 行出现错误$cmd_Name = $_REQUEST['Command_Name'];
我在不必要的情况下忘记了抱歉这一行。删除它,你不会从 REQUEST 中读取 cmd_name 而是从 DB 中读取。
好的,让我试一试
我在我的服务器上尝试了这个解决方案,它工作!我没有想法,也许检查您的输入是否有 id="cmn-toggle-7"【参考方案2】:
这个错误意味着,AJAX 没有通过 GET 发送 Command_Name。如果变量 tData 包含某个值,则必须检查它。
【讨论】:
当用户选择任何序列号时,开关将根据该特定序列号的命令名称显示最后的 ON 或 Off 状态。为此,我生成了一个 msql 查询,该查询显示了所选序列号的最后一个命令名称下面是我的 PHP 代码:以上是关于mysql数据库查询序列的主要内容,如果未能解决你的问题,请参考以下文章