[英]PHP SQL Server: Trying to find most recent entry into a database by the column Date and Time
SQL和PHP的新功能,所以请多加注意,我看到这个解释太可怕了,因此请提前对不起。
运行时此查询返回false。 我正在尝试通过存储在与ID Row示例相对应的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...
子句必须出现在 ORDER BY...
子句之前。 例如:
SELECT TOP 1 *
FROM locationFTable
WHERE ID like $conID
ORDER BY DateAndTime DESC
注意 :在将查询放入代码之前,应先对其进行测试。 SQL Server Management Studio非常适合此任务。
注意 : ID
列很可能是int
所以我猜LIKE
是错误的运算符,也许您想使用=
代替?
奖金奖金注意 :请继续阅读有关SQL注入的信息,因为您的代码很容易受到这种安全风险的攻击。
$mostRecent_Query = "SELECT `location`, `DateAndTime` FROM locationFTable Where ID = $conI ORDER BY DateAndTime DESC";
由于您正在使用过程接口,因此需要手动验证所有涉及到的函数调用的返回值,在本例中为sqlsrv_query()
:
返回成功的语句资源,如果发生错误则返回
FALSE
。
如果发生错误,则需要调用sqlsrv_errors()
来读取它们。
最后但并非最不重要的一点是,您以错误的方式注入数据。
您在文档中有一个粗略而全面的示例:
$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));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.