【问题标题】:fetch data from MSSQL server by ajax through Phpajax 通过 Php 从 MSSQL 服务器获取数据
【发布时间】:2019-01-09 09:07:23
【问题描述】:

我正在使用 AJAX 使用 Php 从 MSSQL server 2017 检索数据,并在文本框中显示这些值。一个 MSSQL 查询给出,但另一个没有。 在 data.php 中,当$stmt 这里等于 SELECT rmtype FROM rmmaster 时,数据正在加载到 AJAX.php 中的文本框,但是当 $stmt 这里等于 @ 987654324@ 这没有值。但是,如果在 sql 管理工作室中运行这两个查询,它们都可以工作并且有结果。

连接没有错误,这对一个有效,对另一个无效。

这是 AJAX.php

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Bootstrap Example</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
    <button type="button" id="element" class="element">Button</button>
    <input type="text" class="form-control" id="usr">

</div>

</body>

<script type="application/javascript">
    $('#element').on('click', function(e){
       $.ajax({
            url: 'data.php',
            type: 'GET',
            success: function(data){
               alert(data);
                $('#usr').val(data);

            }
        });
    });
</script>




</html>

这是DATA.php

 include_once ('home.php');
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}


$name="102";

$stmt = $conn->query("SELECT * FROM rmmaster where rmnumber='$name'"); // this is not giving results
//$stmt = $conn->query("SELECT rmtype FROM rmmaster"); // this is giving answers

if( $stmt === false ) {
    die( print_r( sqlsrv_errors(), true));
}

if( $stmt->fetch() === false) {
    die( print_r( sqlsrv_errors(), true));
}


while ($row = $stmt->fetch()){
    echo ($row['rmtype'].$name);

}

home.php 是与 sql server 的数据连接,该文件中没有错误。

【问题讨论】:

  • 但是这里的一个查询正在获取结果,其他的没有。
  • 表格中是否有一行 rmnumber = 102? rmnumber 是整数还是 varchar/text?
  • 是的,有 102 条记录,它是 char 格式。我尝试以整数和字符格式传递 102。
  • 您是否尝试过将 102 硬编码到查询中(用于调试),例如。 "SELECT * FROM rmmaster where rmnumber='102'" . 当你尝试这个时会发生什么?
  • 是的,但它不会将值加载到文本框中。但是当在管理工作室中输入时,它会给出记录。

标签: javascript php jquery sql-server ajax


【解决方案1】:

您的代码总是读取第一个结果行,然后什么也不做,基本上忽略它。

This If 从结果集中读取第一行

if( $stmt->fetch() === false) {
    die( print_r( sqlsrv_errors(), true));
}

因此删除该 IF,它会在您只选择一行时起作用,并且当您选择多行时也会返回所有行

include_once ('home.php');
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}


$name="102";

$stmt = $conn->query("SELECT * FROM rmmaster where rmnumber='$name'"); // this is not giving results
//$stmt = $conn->query("SELECT rmtype FROM rmmaster"); // this is giving answers

if( $stmt === false ) {
    die( print_r( sqlsrv_errors(), true));
}

/*
if( $stmt->fetch() === false) {
    die( print_r( sqlsrv_errors(), true));
}
*/

while ($row = $stmt->fetch()){
    echo ($row['rmtype'].$name);   
}

【讨论】:

  • 谢谢!,是的,这成功了。但是有没有其他方法可以确定查询是空还是有值?
  • 删除前的 IF 应该这样做
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多