MySQL从查询结果中获取数据
Posted
技术标签:
【中文标题】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从查询结果中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
java 怎样查询MYSQL数据库中的数据;根据id字段查询,获取id 对应的一行数据,并显示 在标签上。