2017-12-04 8 views
0

SQLとPHPには新しくなっていますので、よろしくお願いします。この説明はあまりにもひどいです。PHP SQL Server:最近のデータベースのエントリを列で検索しようとしています。日付と時刻

このクエリは、実行時にfalseを返します。私がしようとしているのは、ID Row exampleに対応するDateAndTime列に格納されているタイムスタンプによってデータベースから最新のエントリを取り出すことです。

私の考えは、日付と時間で行を並べ替え、IDに対応する最初の行を取ります。

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

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

'WHERE ...'クエリ内BY ... '' ORDERの前に来なければなりません。 – DavidG

+0

$ Select_Username_For_Location = "IDのDateAndTime BY '$ CONID' \t ORDERのようなlocationFTable \t DESC FROM TOP 1 * \tを選択";これを試してみました –

答えて

2

あなたの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インジェクションについてお読みください。

+0

ありがとうございました –

1
$mostRecent_Query = "SELECT `location`, `DateAndTime` FROM locationFTable Where ID = $conI ORDER BY DateAndTime DESC"; 
+0

yes編集しました:) –

+0

* @ J.Duneの場合はフィールド名を別に使用します –

0

あなたは、この場合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)); 
} 
関連する問題