Php 如何使用连接字段查询MSSQL数据库

Php 如何使用连接字段查询MSSQL数据库,php,sql-server,Php,Sql Server,有没有人能为我解决这个问题提供建议。我正在用MSSQL运行PHP5.3。只是为了解释发生了什么以及我需要做什么 用户从主页上的表中选择特定的运行行。表中的列为: 日期 分开 格式为565.1211的起始英里/码,即英里565和码1211[此列由我的数据库中两个单独的列mile and yard组成] 终点英里/码 起始纬度 起跑 端板条 结束 全部的 报告是否可用是或否 用户可以通过单击report列中report=yes的单元格来选择行。此数据将发布到下一页。下一页允许用户更改开始和结束英里/

有没有人能为我解决这个问题提供建议。我正在用MSSQL运行PHP5.3。只是为了解释发生了什么以及我需要做什么

用户从主页上的表中选择特定的运行行。表中的列为:

日期 分开 格式为565.1211的起始英里/码,即英里565和码1211[此列由我的数据库中两个单独的列mile and yard组成] 终点英里/码 起始纬度 起跑 端板条 结束 全部的 报告是否可用是或否 用户可以通过单击report列中report=yes的单元格来选择行。此数据将发布到下一页。下一页允许用户更改开始和结束英里/码数据,以便他们可以看到该跑步的特定部分

例如,用户在主页上选择查看从起始英里/码565.1211到结束英里/码593.4321的数据。用户可以通过在两个文本框中键入来更改他们想要查看的部分。一个盒子是起始英里/码,第二个盒子是结束英里/码。因此,用户可以在开始英里/码文本框570.2345和结束英里/码580.6543中键入。我想做的是从用户输入的地方查询数据

SELECT     id, CAST(mile AS varchar(6)) + '.' + CAST(yard AS varchar(6)) AS Mile, gps_lat, gps_long, rotten, split, broken, quality
FROM         table
WHERE mile/yard BETWEEN start mile ??? AND end mile ???
ORDER BY Mile
我的问题是,当用户输入英里/码580.6543的组合时,我将如何从数据库中查询这些信息?我假设我将不得不再次将数据拆分为英里和码,我将如何做到这一点。。。如何检索信息?只需按英里搜索即可,例如570到580之间的何处英里,但如何同时按码和英里搜索

不幸的是,我将无法更改数据库结构,因为这是我必须处理的。。。如果有人能想出更好的方法来做我正在做的事情。。。我洗耳恭听

我明白这是一个很长的问题,所以任何不清楚的地方,请让我知道

干杯


尼尔

你不应该把那些英里/码的数字强加给瓦查尔。你失去了将它们作为数字进行比较的能力,而这正是它们的出发点

将用户的英里/码值转换为数字,然后与数据库中的数字进行比较

你试图强迫苹果和葡萄变成橘子,并将它们与梨和李子相比较。。。可以说,只要把所有东西都做成菠萝就行了


此外,通过执行cast+连接,您将失去在这些字段上放置索引的机会。如果您的表变大了,您将通过强制对每个查询进行全表扫描来降低性能。

正如Marc B所说,我试图强制苹果和葡萄变成橘子,并将它们与梨和李子进行比较。。。可以说,只要把所有东西都做成菠萝就行了。我现在已经改变了脚本的结构

干杯


尼尔

在select子句中,您可以将英里和码进行转换和连接。那么它们是整数还是什么?然后在桌子结构上,它们一起显示为英里/码。发布创建脚本。感谢您的回复Marc B。。。你是对的!我现在已经改变了结构,但仍然发现很难查询数据库。我将结束这个问题并问另一个问题。。。干杯