PHP SQL Server:尝试通过列日期和时间查找数据库中的最近条目

PHP SQL Server:尝试通过列日期和时间查找数据库中的最近条目,php,sql-server,Php,Sql Server,SQL和PHP新手,所以请仁慈一点,我看到这个解释很可怕,所以提前表示歉意 运行此查询时返回false。我要做的是通过存储在与ID对应的DateAndTime列中的时间戳从数据库中提取最近的条目 我的想法是,我按日期和时间对行进行排序,然后选择与ID对应的第一行 $mostRecent_Query = "SELECT TOP 1 * FROM locationFTable ORDER BY DateAndTime DESC Where ID like $conID"; $resultTim

SQL和PHP新手,所以请仁慈一点,我看到这个解释很可怕,所以提前表示歉意

运行此查询时返回false。我要做的是通过存储在与ID对应的DateAndTime列中的时间戳从数据库中提取最近的条目

我的想法是,我按日期和时间对行进行排序,然后选择与ID对应的第一行

$mostRecent_Query = "SELECT TOP 1 * 
FROM locationFTable 
ORDER BY DateAndTime DESC Where ID like $conID";

$resultTime = sqlsrv_query($conn, $mostRecent_Query);

SQL查询错误,
WHERE…
子句必须出现在
orderby…
子句之前。例如:

SELECT TOP 1 * 
FROM locationFTable 
WHERE ID like $conID
ORDER BY DateAndTime DESC
注意:在将查询放入代码之前,应先测试查询。SQLServerManagementStudio非常适合此任务

奖金说明
ID
列很可能是
int
,因此我猜
LIKE
是错误的运算符,也许您打算使用
=


额外注意事项:去阅读有关SQL注入的内容,因为您的代码很可能容易受到这种安全风险的攻击。

您的SQL查询错误,
WHERE…
子句必须出现在
ORDER BY…
子句之前。例如:

SELECT TOP 1 * 
FROM locationFTable 
WHERE ID like $conID
ORDER BY DateAndTime DESC
注意:在将查询放入代码之前,应先测试查询。SQLServerManagementStudio非常适合此任务

奖金说明
ID
列很可能是
int
,因此我猜
LIKE
是错误的运算符,也许您打算使用
=


额外注意事项:阅读有关SQL注入的内容,因为您的代码很可能容易受到该安全风险的攻击。

由于您使用的是过程接口,因此需要手动验证所有相关函数调用的返回值,在这种情况下:

成功时返回语句资源,发生错误时返回
FALSE

如果出现错误,则需要调用以读取它们

最后但并非最不重要的一点是,您以错误的方式注入数据

文档中有一个粗略但全面的示例:

$sql = "INSERT INTO Table_1 (id, data) VALUES (?, ?)";
$params = array(1, "some data");

$stmt = sqlsrv_query( $conn, $sql, $params);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

由于您使用的是过程接口,因此需要手动验证所有相关函数调用的返回值,在这种情况下:

成功时返回语句资源,发生错误时返回
FALSE

如果出现错误,则需要调用以读取它们

最后但并非最不重要的一点是,您以错误的方式注入数据

文档中有一个粗略但全面的示例:

$sql = "INSERT INTO Table_1 (id, data) VALUES (?, ?)";
$params = array(1, "some data");

$stmt = sqlsrv_query( $conn, $sql, $params);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

WHERE…
必须位于查询中的
ORDER BY…
之前。$Select\u Username\u For\u Location=“Select TOP 1*FROM locationFTable DESC,其中ID类似于“$conID”ORDER BY DateAndTime”;尝试此操作后,没有结果,
WHERE…
必须位于查询中的
ORDER BY…
之前。$Select\u Username\u For\u Location=“Select TOP 1*FROM locationFTable DESC其中ID类似于“$conID”ORDER BY DateAndTime”;尝试此无结果,如果*@J.Dune,则单独使用字段名;如果*@J.Dune,则单独使用字段名